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