2013-10-10 54 views
1

难以理解$ watch。我用一个计时器来增加一个值 - 试图在五秒后提示用户,如果他们想继续。如果他们选择“取消”,则计时器停止计数。

小提琴是在这里: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(); 
     } 
    } 
} 

的检查时间功能触发一次在页面加载,我希望它会激发每个增量为$ scope.counter变量改变每一秒。

回答

5

$watch需要的角度表达,这是你想要什么:

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

haaaa!太好了,谢谢! – Nick

2

为了扩大对杰森的回答,你可以在任何范围内的任何变量$watch因为参数只是一个字符串,所以里面你的控制器,你也可以在$rootScope上看看!

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

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

+0

确实很酷!谢谢! – Nick