2016-10-12 4 views
0

Мое намерение - посмотреть значение в $ rootScope и вызвать метод слушателя при изменении значения. Однако я обнаружил, что если значение не изменилось, слушатель также будет вызван. Есть ли способ посмотреть, изменилось ли значение в угловом?

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

ответ

0

$watch работает, когда контроллер создан, а затем, когда значение, присвоенное, поэтому вам нужно проверить равенство внутри $watch функции:

if(oldValue != newValue) {...} 
Смежные вопросы