AngularJS - $ watch和$ timeout

时间:2013-10-10 22:47:28

标签: javascript angularjs

很难理解$ 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变量每秒都在变化。

2 个答案:

答案 0 :(得分:5)

$watch采用角度表达式,这就是你想要的:

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

答案 1 :(得分:2)

为了扩展Jason的答案,你可以在任何范围的任何变量上都有一个$watch,因为参数只是一个字符串,所以在你的控制器里,你也可以看一下$rootScope

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

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