淘汰赛Observable Arrays让你有能力订阅"更改数组just like any other observable。 "订阅"回调函数接收一个参数,它是数组的 new 值。这是一个示例(和fiddle):
var oa = ko.observableArray(['some','initial','data']);
oa.subscribe(function(newValue){
console.log("Array was updated! Now it's:");
console.log(newValue);
// But which item was added?
});
oa.push("more data!");
setTimeout(function(){
oa.remove("some");
},1500);
但是,我想知道哪些元素被添加到observable数组中。有没有办法做到这一点?如果我可以将旧数组与新数组进行比较,那么我可以确定添加或删除了哪些项目。但似乎在"订阅"调用函数回调,没有办法访问" previous"数组值。在那儿?
答案 0 :(得分:6)
knockout observableArray提供事件arrayChange
。
oa.subscribe(function(changes){
ko.utils.arrayForEach(changes, function(c) {
console.log(c.status + " value:\"" + c.value + "\" at index:" + c.index);
});
}, null, 'arrayChange');