我有一个observableArray绑定到一个html选择:
<select name="cars-list" data-bind="options: cars, optionsText: 'name', optionsValue: 'id', value: selectedCar"></select>
我订阅了selectedCarin,每当用户从html选择中选择一辆汽车时,它会再次将该项添加到选择中:
self.selectedCar.subscribe(function (newValue) {
self.cars().push({
id: 124,
name: "sample"
});
});
我在推送到observableArray后立即发出警告,果然,每当我选择一个项目时,长度都会增加1。
但是,html选择控件并未反映此更改。它存在于observableArray中,但显示器没有显示出来。有什么想法吗?
答案 0 :(得分:0)
您不是直接在可观察数组上调用push
,而是在底层数组上,因此knocout不会收到有关更改的通知。
要解决此问题,您只需从()
cars()
即可
self.cars.push({
id: 124,
name: "sample"
});
演示JSFiddle。