2014-09-19 21 views
-1

我有以下代码:获取索引时,深看集合在angularjs

$scope.$watch('myData', function (newValue, oldValue) { 
     console.log('oldValue=' + oldValue); 
     console.log('newValue=' + newValue); 
     //do something 
    }, true); 

它,当我更新的myData集合内,但在NEWVALUE和属性oldValue我得到的集合的属性执行罚款。有没有办法让项目的索引改变?

回答

0

如果$watch被触发,因为您的收藏中的所有物品都已被删除,该怎么办?你想在这种情况下得到什么指数?

或者如果它由于splice而被触发,那么它将删除一些项目并在同一操作中添加其他项目?

或者如果由于集合中的多个项目发生更改而被触发会怎么样?

我想要说明的是,当你有对象的数组了深刻$watch,该$watch可以触发许多不同的原因,在你的问题看来你是假设watch将被触发因为一个项目已经发生了变化,这不一定是真实的,其他很多事情都可能发生变化。

您可以使用函数$watch函数的参数中提供给您的newValue和oldValue来计算已发生的更改,如果更改是其中一个项目已更改您将能够找到它是哪一个以及它的索引是什么。