1

ソースはこちら
http://jsfiddle.net/M8KFd/302/
動物の名前を押すと、すべてうまくいきます。ただし、チェックボックスを押すと、動物が選択されますが、チェックボックスはチェックされません。何か案は?
すべての動物にプロパティ .isSelected() なしで実行したい

4

2 に答える 2

1

ここにあなたのフィドルの修正版があります。

主な変更点は次のとおりです。

  1. チェックボックスは、「名前」属性を使用してグループ化されます。「動物」という名前を付けましたが、モデルとは関係ありません。
  2. 動物配列はモデルに属します
  3. checked 属性は、このようにバインドされますchecked: $parent.selectedAnimalsselectedAnimalsは、動物 ID の配列です。Knockout.js はトラックを保持します。
  4. 各入力の新しいバインディング: value: id, attr: {id: id}. 入力が selectedAnimals 配列内の動物の ID と同じ値を取得すると、Knockout.js は ID によってこの配列を修正する方法を認識します。
  5. selectAll関数は、動物配列から selectedAnimals 配列に各動物の ID をコピーします。もう一度 Knockout.js が UI を更新します。

そしていくつかのラベル

于 2012-08-27T19:20:03.057 に答える
1

これはイベントの順序に関係があると思います。チェックボックスをオンにすると、チェックされた評価が行われます。その時点で、アイテムは selectedItems にありません。次回評価が行われるとき、それはまだそうであるため、遅延が説明されます。

あなたの例を機能させるためにあなたのフィドルをフォークしました(すべて選択を除く)

http://jsfiddle.net/dyKvQ/

于 2012-08-27T13:36:57.090 に答える