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

Bra*_*ord 35 knockout-2.0 knockout.js

是否可以使用Knockout的if绑定多个布尔值?

<div data-bind="if: (property.aTrueValue && property.anotherTrueValue)">...
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*edy 53

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

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

所以下面的两个工作相同

<div data-bind="if: foo"></div>
<div data-bind="if: foo()"></div>
Run Code Online (Sandbox Code Playgroud)

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

请尝试以下方法

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...
Run Code Online (Sandbox Code Playgroud)


dae*_*s28 5

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

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...
Run Code Online (Sandbox Code Playgroud)

这是一个有效的jsfiddle.