web-dev-qa-db-ja.com

Knockout.jsの複数のブール値に対する「バインド」

Knockoutのバインディングの場合を複数のブール値で使用できますか?

といった

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

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

35
Brad Bamford

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

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

したがって、次の2つの動作は同じです

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

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

以下を試してください

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

次のことができます-ifバインディングは任意の式を取るだけです。そのようなobservableの値を単に参照する以上のことを行う場合、実際には次のようにobservableを呼び出す必要があります。

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

動作する jsfiddle です。

5
daedalus28