38

如果绑定多个布尔值,是否可以使用 Knockout ?

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

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

4

3 回答 3

53

当 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())">...
于 2013-03-09T05:34:08.570 回答
6

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

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

这是一个有效的jsfiddle

于 2013-03-09T05:37:34.270 回答
0

当前的解决方案更像是这样:

<div data-bind="if: (prop() === true && prop2() === true)">...
于 2020-06-12T10:40:30.657 回答