1

我有一个带有观察者功能的列表:

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 被删除?有没有办法获得实际删除的元素索引?

4

1 回答 1

0

您可以使用 Array.observe 在正确的索引处捕获拼接事件:

var names = ['joe', 'bob', 'loic'];

Array.observe(names, function(changes){
    changes.forEach(function(change) {        
      console.log(change.type, change.name);
    });
});   

谢谢@xavier-delamotte :)

于 2014-11-28T06:38:43.420 回答