AngularJS:Basic $watch不工作

前端之家收集整理的这篇文章主要介绍了AngularJS:Basic $watch不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在AngularJS中设置一个手表,我显然做错了,但我不太清楚。手表在直接页面加载时触发,但是当我更改观看值时,它不会触发。为了纪录,我还在匿名函数上设置了返回观察变量的手表,但是我有完全相同的结果。

我已经安装了一个最小的例子,在控制器中做所有的事情。如果它有所作为,我的实际代码被挂接在指令中,但是两者都以相同的方式失败。我觉得有一些基本的东西我失踪了,但我只是看不到它。

HTML:

<div ng-app="testApp">
    <div ng-controller="testCtrl">
    </div>
</div>

JS:

var app = angular.module('testApp',[]);

function testCtrl($scope) {
    $scope.hello = 0;

    var t = setTimeout( function() { 
        $scope.hello++;
        console.log($scope.hello); 
    },5000);

    $scope.$watch('hello',function() { console.log('watch!'); });
}

超时工作,你好,但手表不起火。

演示在http://jsfiddle.net/pvYSu/

这是因为您更新了值,而不知道。

你应该使用$ timeout服务而不是setTimeout,你不需要担心这个问题。

function testCtrl($scope,$timeout) {
    $scope.hello = 0;

    var t = $timeout( function() { 
        $scope.hello++;
        console.log($scope.hello); 
    },function() { console.log('watch!'); });
}

或者你可以调用$ scope。$ apply();强制有角度重新检查值,并在必要时调用手表。

var t = setTimeout( function() { 
    $scope.hello++;
    console.log($scope.hello); 
    $scope.$apply();
},5000);

猜你在找的Angularjs相关文章