我一直在研究 AngularJS 摘要循环的注意事项,我想更好地理解正确使用和不正确使用它之间的区别。
例如,如果我有一个如下所示的 AngularJS 代码:
var myApp = angular.module("testApp", []);
myApp.controller("testController", ["$scope", "$timeout", function($scope, $timeout){
setTimeout(function(){
$scope.username = "Test User name";
}, 3000);
$timeout(function(){
$scope.username = "AngularJS User name";
}, 3000);
}]);
为什么 setTimeout
没有被用作 Digest Cycle 的一部分,而 $timeout
是,我该如何解决这个问题?
请记住,我不仅在寻找代码解决方案,而且还在寻找对发生这种情况的原因的解释。尽管代码解决方案可能会出现,但它不会 self 解释。
最佳答案
$timeout
是 setTimeout()
的 Angular 化版本,即它以触发摘要循环的方式编码。 setTimeout()
是一个普通的 Javascript 函数,它对 Angular 或摘要循环一无所知。因为 setTimeout()
不是一个简单的 JS 对象,Angular 不能$watch
它。
因此,拥有像 $timeout
这样的功能的全部意义在于它们是某些 Javascript 功能的 Angular 友好版本。
关于javascript - 如何正确使用 AngularJS 摘要循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35417922/