私は何人かの人々が同様の問題を抱えているのを見てきましたが、解決策はありません。次のようなビューモデルがあります
var House = function() {
this.houseName = ko.observable("");
this.reports = ko.observableArray([]);
this.addReport = function() { this.reports.push(new Report) }.bind(this);
}
そして、「レポート」は - House.addReport() で - で満たされます
var Report = function() {
this.reportname = ko.observable("");
this.sensor_id = ko.observable(0);
}
HTMLは次のようになります(簡略化)
<input type="text" data-bind="value: houseName">
<div data-bind="foreach: reports">
<input type="text" data-bind="value: reportname"><select data-bind="value: sensor_id" />
</div>
それで、問題に。foreach の外で houseName を入力すると、モデルが正常に変更されます (デバッグ DIV で継続的に表示されます)。addReport メソッドをトリガーすると、UI は指示どおりに動作し、テキスト ボックスと選択を追加します。しかし、実際にモデルを変更するのは選択の変更だけです。テキストボックスの変更ではありません! 奇妙なことに、IE では動作するように見えますが、Chrome では動作しません。
ほとんどの場合、IE によって舞台裏で処理されるのは私のミスですが、バグとは何ですか?
編集 このjsfiddleは、ほぼ同じ目標を目指しているようです-私の問題はありません。
EDIT reloaded Firefoxでも動作しません。しかし、JSFiddle では問題なく動作するようです。