38

複数のブール値にバインドする場合、ノックアウトを使用することは可能ですか?

そのような

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

さまざまな構文を試しましたが、正しい構文が見つからないようです。それが可能かどうかはわかりません。

4

3 に答える 3

53

Knockout がバインディングを処理するとき、最初に式を評価します。

式の結果がオブザーバブルになる場合、オブザーバブルを便宜上評価して、if: が機能する最終値を取得します。

したがって、次の2つは同じように機能します

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

オブザーバブルで終わる単純な式の世界を離れると、おそらく砂糖を置き去りにして、常にオブザーバブルを自分で評価したいと思うでしょう(他に何もなければ正気のために)。

以下を試してください

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...
于 2013-03-09T05:34:08.570 に答える
6

できます - if バインディングは任意の式を取ります。そのようなオブザーバブルの値を参照するだけでなく、実際にオブザーバブルを次のように呼び出す必要があります。

<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 に答える