我有一个带有观察者功能的列表:
var names = ['joe', 'bob', 'loic'];
Object.observe(names, function(changes){
changes.forEach(function(change) {
console.log(change.type, change.name)
});
console.log("names",names);
});
console.log("######## del bob");
names.splice(1,1);// output is "update 1 - delete 2", why?
console.log("names", names) // but "bob" is the one deleted in the list
根据更改对象删除的索引是2,但是我删除了索引1,并且列表实际上删除了索引1。你知道为什么吗?
是否因为索引1被更新以获取索引2值而索引2被删除? 有没有办法获得实际删除的元素索引?
答案 0 :(得分:0)
您可以使用Array.observe:
在正确的索引处捕获splice事件var names = ['joe', 'bob', 'loic'];
Array.observe(names, function(changes){
changes.forEach(function(change) {
console.log(change.type, change.name);
});
});
谢谢@ xavier-delamotte:)