angular $ watch旧值和新值是一样的

时间:2016-10-12 06:37:26

标签: javascript angularjs

我的目的是在$ rootScope中查看一个值,并在值更改时调用listener方法。但是,我发现如果value没有改变,那么也会调用监听器。有没有办法观察一个值是否有角度变化?

app = angular.module('myApp',[]);

app.controller('MyCtrl', function($rootScope, $timeout){
  $rootScope.markers = 1;
  $rootScope.$watch('markers', function(newValue, oldValue){
    console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
  });
  $timeout( function() {
    $rootScope.markers = 1;
  }, 500);
});

这是代码http://plnkr.co/edit/MXIaJKE9UGTMjrreFjb0?p=preview

1 个答案:

答案 0 :(得分:1)

$watch在创建控制器时运行,然后在分配值时运行,因此您需要检查$watch函数内的相等性:

if(oldValue != newValue) {...}