2013-10-10 4 views
1

Имея трудное понимание $ watch. Я использую его с таймером, чтобы увеличить значение - попытка запросить пользователя через пять секунд, если они хотят продолжить. Если они выбирают «Отмена», таймер прекращает подсчет.

Fiddle здесь: http://jsfiddle.net/nicktest222/VuuEK/4/

// Increment with $timeout 
$scope.counter = 0; 
$scope.onTimeout = function() { 
    $scope.counter++; 
    mytimeout = $timeout($scope.onTimeout, 1000); 
}; 
var mytimeout = $timeout($scope.onTimeout, 1000); 

// Watch 
$scope.$watch($scope.counter, checkTime); 

function checkTime() { 
    console.log($scope.counter); 
    if ($scope.counter === 5) { 
     var check = confirm('Do you want to continue?'); 
     if (check === false) { 
      $scope.stop(); 
     } 
    } 
} 

Функция срабатывает checkTime раз при загрузке страницы, я надеялся, что это будет стрелять каждый прирост в качестве переменной $ scope.counter меняется каждую секунду.

ответ

5

$watch принимает угловое выражение, это то, что вы хотите:

$scope.$watch('counter', checkTime); 
+0

haaaa! Удивительно, спасибо! – Nick

2

Чтобы расширить ответ Джейсона, вы можете иметь $watch на любой переменной любого масштаба, так как параметр это просто строка, так что внутри ваш контроллер, вы можете также смотреть на $rootScope!

$scope.$watch('counter', ...)

$rootScope.$watch('rootCounter', ...)

+0

очень здорово! благодаря! – Nick