我有像这样的DEMO
的KO观察者var list = function(){
var array = [{val :'1'}, {val :'2'}, {val :'3'}, {val :'4'}];
var that = this;
this.inputs = ko.observableArray();
array.forEach(function(obj){
var val = ko.observable(obj.val);
that.inputs.push(val);
//Subscribe to each element
val.subscribe(function(val){
console.log(val);
});
});
}
ko.applyBindings(new list());
我正在使用inputs
填充
<ul data-bind="foreach: inputs">
<input type="text" data-bind="value :$data" />
</ul>
因此,当我更改输入数据时,有一种方法可以知道父项是否已使用新输入的数据进行更新,因为所有值都是可观察的。
按照knockout-js-observable-array-changes-to-individual-observable-items
我将每个项目视为可观察的,并尝试订阅更改
//Subscribe to each element
val.subscribe(function(val){
console.log(val);
});
但这也不起作用,如何实施此knockout-js-observable-array-changes-to-individual-observable-items解决方案。
答案 0 :(得分:1)
请勿将ko.observable
直接放入ko.observableArray
但创建具有可观察属性的对象。
所以将数组填充代码更改为:
var val = ko.observable(obj.val);
that.obs.push({val: val});
您的观点:
<ul data-bind="foreach: inputs">
<input type="text" data-bind="value: val" />
</ul>
演示JSFiddle。