angularjs $watch旧值和新值是一样的
发布时间:2020-12-17 08:26:24 所属栏目:安全 来源:网络整理
导读:我的意图是在范围内观看一个模型,并找出旧价值与新价值之间的差异。 但是,我发现旧的值和新的值都是从以下代码相同的。 app.controller('MyCtrl',function($scope,$timeout){ $scope.markers = {}; $scope.$watchCollection('markers',function(newValue,o
我的意图是在范围内观看一个模型,并找出旧价值与新价值之间的差异。
但是,我发现旧的值和新的值都是从以下代码相同的。 app.controller('MyCtrl',function($scope,$timeout){ $scope.markers = {}; $scope.$watchCollection('markers',function(newValue,oldValue){ console.log('being watched oldValue:',oldValue,'newValue:',newValue); }); $timeout( function() { $scope.markers.foo = 1; },500); $timeout( function() { $scope.markers.bar = 2; },500); }); 输出: being watched oldValue: Object {} newValue: Object {} script.js:6 being watched oldValue: Object {foo: 1} newValue: Object {foo: 1} script.js:6 being watched oldValue: Object {foo: 1,bar: 2} newValue: Object {foo: 1,bar: 2} 为什么他们是一样的,如果是故意的,那为什么? 这里是代码,http://plnkr.co/edit/rfMCF4x6CmVVT957DPSS?p=preview
你可以使用$ watch,这似乎是有效的。如果您想同时观看对象上的所有属性(正如您所做),则需要添加true作为手表的第三个参数。这设置了深刻的手表。
Here is a working plunker. JS: app = angular.module('myApp',[]); app.controller('MyCtrl',$timeout){ $scope.markers = {}; $scope.$watch('markers',newValue); },true); $timeout( function() { $scope.markers.foo = 1; },500); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |