我正在尝试通过使用“if”模板控制器来隐藏我的组件。问题是它是可见的,即使我把 false 放进去:
<template if.bind="${false}">
zzzzzzzz
</template>
if.bind="false" 和没有绑定的两种情况都会带来相同的结果。难道我做错了什么?如果没有,您能否指出 aurelia 代码调试可以帮助我获得线索?
最好的问候,尤金。
我正在尝试通过使用“if”模板控制器来隐藏我的组件。问题是它是可见的,即使我把 false 放进去:
<template if.bind="${false}">
zzzzzzzz
</template>
if.bind="false" 和没有绑定的两种情况都会带来相同的结果。难道我做错了什么?如果没有,您能否指出 aurelia 代码调试可以帮助我获得线索?
最好的问候,尤金。
使用if.bind
信号 Aurelia 尝试评估表达式。因此,您不需要使用插值语法。当您将数据注入非 Aurelia 管理的属性时,您只想使用插值。典型的用例是将文本注入任意元素。
<p>Welcome to my website, you are the ${visitorCount} visitor!</p>
你也可以在其他你想任意注入数据的地方使用插值,包括 html 属性。
<input placeholder="${currentRecordType}" />
插值是一种单向绑定。在这里阅读更多:http: //aurelia.io/docs.html#string-interpolation
现在,绑定语法用于挂钩 Aurelia 中启用的行为。开箱即用,这包括一些模板逻辑、一些属性行为和一些其他自定义的东西。
每个属性都旨在检查它的使用位置以及应该如何驱动它。例如,以下绑定将是单向的,因为它不接受输入并且仅作为单向变量绑定才有意义。
<div if.bind="sectionEnabled"></div>
但是,以下绑定将是双向的,因为它接受输入,因此通常以双向方式运行。
<input value.bind="firstName />
但是请注意,没有语法可以说“这是一个变量”。事实上,Aurelia 假设您想要传入一个变量。如果你不这样做,例如在第二种情况下,你就不需要 Aurelia,你只需写:
<input value="firstName" />
您可以在此处阅读有关绑定语法的更多信息:http: //aurelia.io/docs.html#databinding
在您的情况下,您通过尝试绑定文字值采取了错误的方法。Aurelia 正在寻找一个名为${false}
/的变量false
,但很可能找不到它。您将需要在 viewModel 中创建一个变量来绑定并指示您的视图绑定到它:
视图模型
class viewModel {
...
constructor() {
this.showTemplate = true;
}
}
看法
<template>
<div if.bind="showTemplate">
...
</div>
</template>