目に見えるパラメーターをノックアウトで 'または'ステートメントに結合する

StackOverflow https://stackoverflow.com/questions/8803484

  •  26-10-2019
  •  | 
  •  

質問

2つの条件のいずれかが真である場合、目に見えるプロパティを真であるようにバインドしたいと思います。次のようなもの

 <tr data-bind="visible: active || $parent.displayDeactive">....</tr>

私のコードは、いずれかのバインディングを行うときに機能しますが、||を置くときはそうではありませんそこで。このバインディングにロジックを入れることができるというドキュメントは見つかりませんでしたが、テンプレートのプロパティと$のオブジェクトを1つバインドしているため、直接それを行うことができない場合は、それを行う方法は何ですか親ビューモデル。

役に立ちましたか?

解決

式で観測可能な値の値を使用している場合は、それらを関数として参照する必要があります。だから、場合 activedisplayDeactive あなたがするオブザーバブルです:

data-bind="visible: active() || $parent.displayDeactive()"

ビューモデルに移動する方法はいくつかあります。

  • 子供に計算された観察可能なものを作成します(関数は親を参照できる必要があります)
  • 子供を取り入れて価値を返す親に関数を作成します(バインディングは計算された観測可能で実行されるため、変更にアクセスできるように観察可能な場合に再び発射されます)
  • 親を取り入れて値を返す子供に関数を作成します(上記と同じメモ)

バインディングのロジックのサンプルと親の関数の使用:こちら: http://jsfiddle.net/rniemeyer/f6zgh/

他のヒント

あなたがそれらを評価しているので、観測可能性の後にパレンズを追加します。

<input type="checkbox" data-bind="checked:displayDeactive"> Display deactive</input>
<br/><br/>
<table>
    <tbody data-bind="foreach: products">
        <tr data-bind="visible: active() || $parent.displayDeactive()">
            <td><span data-bind="text:name"></span></td>
        </tr>
    </tbody>
</table>

ここで完全なコードを見つけることができます: http://jsfiddle.net/johnpapa/gsnus/

式を評価するテンプレートアイテムに計算されたプロパティを使用できます(@RpnieMeyerがそれで応答したのを見ました... i +1'd)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top