私は、チェックボックスのシリーズとしてboolsの配列を表示するためにKnockout.jsを使用して、次のコードを持っている:
<table>
<tr data-bind="foreach: Array">
<td><input type=checkbox data-bind="checked:$data"></td>
</tr>
<tr data-bind="foreach: Array">
<td data-bind="text:$data"></td>
</tr>
</table>
<button data-bind="click: toggle0">Toggle Element 0</button>
<script>
var simpleModel = {
"Array" : ko.observableArray([ko.observable(false),
ko.observable(false),
ko.observable(true)]),
"toggle0" : function() {
simpleModel.Array()[0](!simpleModel.Array()[0]());
}
};
ko.applyBindings(simpleModel);
</script>
あなたはhttp://jsfiddle.net/tP9Dm/3/を見れば、あなたはそれを見ることができ、チェックボックスは、変化に対応しながら、ビューモデルは、チェックボックスの変更に応答しません。
https://groups.google.com/d/msg/knockoutjs/-dHpOg5ZBPI/1q4iqdTlKvUJによれば、$data
はforeachループによってアンラップされているように見えるので、data-bind
はモデルを更新するために使用することを知らないということです。
明らかに、配列に単純ブール値の代わりにオブジェクトが含まれるようにすることでこれを修正できますが、不要な余分な間接参照層のように見えます。変更をモデルに伝播する簡単な方法はありますか?