AngularJS:Basic $watch不工作
发布时间:2020-12-17 08:08:13 所属栏目:安全 来源:网络整理
导读:我试图在AngularJS中设置一个手表,我显然做错了,但我不太清楚。手表在直接页面加载时触发,但是当我更改观看值时,它不会触发。为了纪录,我还在匿名函数上设置了返回观察变量的手表,但是我有完全相同的结果。 我已经安装了一个最小的例子,在控制器中做
我试图在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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |