Knockout.js“if Binding”在多个布尔值上

时间:2013-03-09 05:22:07

标签: knockout.js knockout-2.0

是否可以在多个布尔值上使用Knockout的 if binding

<div data-bind="if: (property.aTrueValue && property.anotherTrueValue)">...

我尝试了很多不同的语法,但似乎找不到合适的语法。 我不确定它是否可能。

3 个答案:

答案 0 :(得分:52)

当Knockout处理你的绑定时,它首先评估你的表达。

如果表达式产生了一个observable,它会评估observable以方便获取if:的最终值。

所以以下两个相同的工作

<div data-bind="if: foo"></div>
<div data-bind="if: foo()"></div>

一旦你离开了以可观察的方式结束的简单表达的世界,你可能也想留下糖并且总是自己评估观察者(为了理智而不管其他)。

尝试以下

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...

答案 1 :(得分:5)

你可以 - if绑定只需要一个任意表达式。当做的不仅仅是引用像这样的observable的值时,你需要像这样实际调用observable:

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...

这是一个有效的jsfiddle

答案 2 :(得分:0)

当前解决方案更像这样:

<div data-bind="if: (prop() === true && prop2() === true)">...