我见过一些人遇到类似的问题,但没有解决方案。我有一个看起来像的视图模型
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似乎瞄准了几乎完全相同的目标 - 没有我的问题。
重新加载编辑它在 Firefox 中也不起作用。但是,它似乎在 JSFiddle 中工作正常!