【发布时间】:2014-08-10 21:28:22
【问题描述】:
我发现如果我有如下模板绑定:
<!-- ko template: { name: 'mytemplate', if: myObservable() == 1 || myObservable() == 2 } -->
<!-- /ko -->
当 myObservable 直接从 1 变为 2 时,knockout 将重新渲染 mytemplate。if 语句永远不会进入错误状态,但 knockout 会重新渲染整个模板。
这是一个淘汰错误吗?
切换到以下结构可以轻松避免该问题:
<!-- ko if: myObservable() == 1 || myObservable() == 2 -->
<!-- ko template: { name: 'mytemplate' } --><!-- /ko -->
<!-- /ko -->
这对我来说似乎并不明显,原生 if 绑定与模板绑定中的 if 选项不同。引用自模板绑定的淘汰文档:
原生模板是支持 foreach 的机制,如果,使用, 和其他控制流绑定。
为什么 if: 绑定的这两种用法不同?
【问题讨论】:
标签: knockout.js