ソースはこちら
http://jsfiddle.net/M8KFd/302/
動物の名前を押すと、すべてうまくいきます。ただし、チェックボックスを押すと、動物が選択されますが、チェックボックスはチェックされません。何か案は?
すべての動物にプロパティ .isSelected() なしで実行したい
2 に答える
1
ここにあなたのフィドルの修正版があります。
主な変更点は次のとおりです。
- チェックボックスは、「名前」属性を使用してグループ化されます。「動物」という名前を付けましたが、モデルとは関係ありません。
- 動物配列はモデルに属します
- checked 属性は、このようにバインドされます
checked: $parent.selectedAnimals
。selectedAnimalsは、動物 ID の配列です。Knockout.js はトラックを保持します。 - 各入力の新しいバインディング:
value: id, attr: {id: id}
. 入力が selectedAnimals 配列内の動物の ID と同じ値を取得すると、Knockout.js は ID によってこの配列を修正する方法を認識します。 - selectAll関数は、動物配列から selectedAnimals 配列に各動物の ID をコピーします。もう一度 Knockout.js が UI を更新します。
そしていくつかのラベル
于 2012-08-27T19:20:03.057 に答える
1
これはイベントの順序に関係があると思います。チェックボックスをオンにすると、チェックされた評価が行われます。その時点で、アイテムは selectedItems にありません。次回評価が行われるとき、それはまだそうであるため、遅延が説明されます。
あなたの例を機能させるためにあなたのフィドルをフォークしました(すべて選択を除く)
于 2012-08-27T13:36:57.090 に答える