0

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

我正在使用 $scope.$watchCollection 对“道具”的所有属性(共有三个)设置监视。

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

这是一个工作示例:http: //jsbin.com/eYofakU/3/edit。这里发生了什么?

这使用 Angular 1.2.0-rc.3

谢谢!

4

2 回答 2

1

编辑这是我的问题已经关闭,它现在应该从 1.2.15 版本开始工作。

-- 旧答案 -- $watchCollection 仍然
存在一个问题,您可以选择使用 @CodeHater 解决方案或尝试johnsoftek 在 github 上提出的快速修复,(您需要构建 angular js 文件)

编辑:我尝试了 github 上报告的快速修复,它似乎有效,这是您在 plnkr.co 中工作的示例http://plnkr.co/s9W2B84sX8lZOOUgifEL 请注意,我构建的角度版本是 v1.2.5-ca116c3今天(12 月 8 日)来自 master 分支。
编辑:13/01/14
问题是里程碑的一部分:1.2.9

于 2013-12-08T11:27:29.763 回答
1

这对我有用。我更改了$watchCollectionto$watch并将第三个参数设置为 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);
于 2013-10-24T14:49:16.180 回答