我的目的是在$ 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);
});
答案 0 :(得分:1)
$watch
在创建控制器时运行,然后在分配值时运行,因此您需要检查$watch
函数内的相等性:
if(oldValue != newValue) {...}