首页 文章

Angular $ watchCollection回调不捕获对象中的更改

提问于
浏览
0

我正在使用带有ngModel指令的三个输入复选框来绑定到名为“props”的对象的属性 .

我正在使用$ scope . $ watchCollection来设置关于'props'的所有属性的监视(有三个) .

在我的$ watchCollection回调函数中,我需要将旧属性值与新属性值进行比较,但在函数中,旧属性和新属性始终相同!

这是一个有效的例子:http://jsbin.com/eYofakU/3/edit . 这里发生了什么?

这使用Angular 1.2.0-rc.3

谢谢!

2 回答

  • 1

    这对我有用 . 我将 $watchCollection 更改为 $watch 并将第3个参数设置为true,这告诉angular创建要监视的对象的深层副本以进行比较:

    $scope.$watch("props",function(n,o){
        console.log("NEW");
        console.log(n);
        console.log("OLD");
        console.log(o);
        console.log("Why are they the same?!");
    },true);
    
  • 1

    Edit 这是我ssue has been closed,它应该从版本1.2.15开始工作 .

    Edit :我尝试了在github上报告的快速修复,它似乎工作,这是你在plnkr.co工作的例子http://plnkr.co/s9W2B84sX8lZOOUgifEL请注意,角度版本是v1.2.5-ca116c3,因为我今天(12月8日) Build 了它主分公司 .
    Edit :13/01/14
    问题是里程碑的一部分:1.2.9

相关问题