很难理解$ 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();
}
}
}
checkTime函数在页面加载时触发一次,我希望它会触发每一个增量,因为$ scope.counter变量每秒都在变化。
答案 0 :(得分:5)
$watch
采用角度表达式,这就是你想要的:
$scope.$watch('counter', checkTime);
答案 1 :(得分:2)
为了扩展Jason的答案,你可以在任何范围的任何变量上都有一个$watch
,因为参数只是一个字符串,所以在你的控制器里,你也可以看一下$rootScope
!
$scope.$watch('counter', ...)
$rootScope.$watch('rootCounter', ...)