AngularJS:Basic $watch不工作

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

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

HTML:

  1. <div ng-app="testApp">
  2. <div ng-controller="testCtrl">
  3. </div>
  4. </div>

JS:

  1. var app = angular.module('testApp',[]);
  2.  
  3. function testCtrl($scope) {
  4. $scope.hello = 0;
  5.  
  6. var t = setTimeout( function() {
  7. $scope.hello++;
  8. console.log($scope.hello);
  9. },5000);
  10.  
  11. $scope.$watch('hello',function() { console.log('watch!'); });
  12. }

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

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

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

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

  1. function testCtrl($scope,$timeout) {
  2. $scope.hello = 0;
  3.  
  4. var t = $timeout( function() {
  5. $scope.hello++;
  6. console.log($scope.hello);
  7. },function() { console.log('watch!'); });
  8. }

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

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

猜你在找的Angularjs相关文章