多个布尔值上的 Knockout.js“如果绑定”
Posted
技术标签:
【中文标题】多个布尔值上的 Knockout.js“如果绑定”【英文标题】:Knockout.js "if Binding" on multiple booleans 【发布时间】:2013-02-24 19:04:38 【问题描述】:是否可以在多个布尔值上使用 Knockout 的 if binding?
如
<div data-bind="if: (property.aTrueValue && property.anotherTrueValue)">...
我尝试了很多不同的语法,但似乎找不到正确的语法。 我不确定这是否可能。
【问题讨论】:
jsfiddle.net/daedalus28/6hxvQ 【参考方案1】:当 Knockout 处理您的绑定时,它首先评估您的表达式。
如果表达式产生一个 observable,它会评估 observable 以方便获取 if: 起作用的最终值。
所以以下两个工作相同
<div data-bind="if: foo"></div>
<div data-bind="if: foo()"></div>
一旦你离开了以 observable 结尾的简单表达式的世界,你可能还想把糖抛在脑后,总是自己评估 observables(如果没有别的,为了理智)。
试试下面的
<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...
【讨论】:
谢谢,这正是我需要做的。【参考方案2】:你可以 - if 绑定只需要一个任意表达式。当做的不仅仅是像这样引用 observable 的值时,你需要像这样实际调用 observable:
<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...
这是一个有效的jsfiddle。
【讨论】:
【参考方案3】:目前的解决方案更像这样:
<div data-bind="if: (prop() === true && prop2() === true)">...
【讨论】:
以上是关于多个布尔值上的 Knockout.js“如果绑定”的主要内容,如果未能解决你的问题,请参考以下文章