次のように、整数の単純な配列を入力付きの順序付けられていないリストにバインドしようとしています。
ビューモデル
self.amounts = ko.observableArray();
for (var i=0; i<5; i++){
self.amounts.push(ko.observable(i));
}
HTML
<ul data-bind="foreach: amounts">
<li><input type="text" data-bind="value: $data"/></li>
</ul>
これにより、0 ~ 4 の数字が適切に入力されたリストが生成されます。ただし、いずれかの入力の値を変更すると、ViewModel は新しい値を取得しません。
シンプルなオブジェクトの配列を observableArray として使用すると、次のようになります。
[{amt: 0}, {amt: 1}, {amt: 2}]
HTMLを調整して入力を「amt」プロパティにバインドすると、入力の値を変更するとViewModelの変更がトリガーされます。
元のデータ モデルを変更する回避策を使用せずに、単純な値の配列を使用して双方向バインディングを実現することは可能ですか? もしそうなら、私は何を間違っていますか?
編集:この質問は、重複としてマークされている質問とは異なりますKnockout JS - observableArray を正しくバインドする方法、それは単純型要素 ( ints、またはstring )の特別な双方向バインディングのケースに関するものです。