加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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);
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读