angularjs watchcollection上一个值 更新

angularjs watchcollection上一个值 更新,angularjs,Angularjs,此问题已在1.3.0测试版中解决:请参阅 我有一个数组,我想监听其中的更改,并将新值与旧值进行比较。$watchCollection的文档(http://docs.angularjs.org/api/ng.$rootScope.Scope)表示回调包含三个参数,第一个是新集合,第二个是前一个值的副本。似乎将同一数组传递给这两个参数,而不是新值和旧值 在这种情况下,相同的数组被传递给新值和以前的值,无论我是将值推送到数组中,还是将变量设置为新数组,或者编辑数组的元素。所有3个示例都会触发watc

此问题已在1.3.0测试版中解决:请参阅


我有一个数组,我想监听其中的更改,并将新值与旧值进行比较。$watchCollection的文档(http://docs.angularjs.org/api/ng.$rootScope.Scope)表示回调包含三个参数,第一个是新集合,第二个是前一个值的副本。似乎将同一数组传递给这两个参数,而不是新值和旧值

在这种情况下,相同的数组被传递给新值和以前的值,无论我是将值推送到数组中,还是将变量设置为新数组,或者编辑数组的元素。所有3个示例都会触发watch侦听器,但没有一个在回调中包含前一个值

我能用这个得到我想要的结果。它使用$watch(obj、listener、equality)方法,第三个参数为true。$watchCollection不也应该提供此功能吗

$scope.$watchCollection("arr", function(newVal, oldVal) {
    //here, oldVal should contain a copy of the former value,
    //but it is the same as newVal
});

编辑:对前面的答案感到抱歉

但在AngularJs存储库中,这似乎是一个开放的问题,存在着完全相同的问题


祝您好运。

阅读文档后,我得到了与您相同的理解,并且我能够复制本文中的结果。可能是一个bug,或者文档需要重写——不要粗鲁,但那把小提琴和我的一模一样——我和你找到了同样的解决方法;我只是想知道为什么$watchCollection不这么做thing@David我真的很抱歉!!我想我错过了,我以为这是发生在我身上的同一个问题,忘记了彻底阅读。我将编辑我的答案。祝你好运,没问题!这是一个很好的发现,就是这个问题。