AngularJS - $watch 未按预期工作
AngularJS - $watch not working as expected
这是我的 app.js
var MyApp = angular.module('MyApp', []);
MyApp.controller('MyController', ['$scope', function($scope){
$scope.watchMe = 'hey';
$scope.init = function() {
setTimeout(function() {
$scope.watchMe = 'changed!';
}, 3000)
};
$scope.$watch('watchMe', function() {
console.log($scope.watchMe)
});
}]);
我想,3 秒后,我会看到:
'changed!'
在我的控制台中。
相反,我只看到:
'hey'
我在 index.html 中调用我的 init() 函数,这样:
<div ng-controller="MyController" ng-init="init()">
为什么我会看到这个输出?
var MyApp = angular.module('MyApp', []);
MyApp.controller('MyController', ['$scope', '$timeout', function($scope, $timeout){
$scope.watchMe = 'hey';
$scope.init = function() {
$timeout(function() {
$scope.watchMe = 'changed!';
}, 500);
};
$scope.$watch('watchMe', function(newVal, oldVal) {
console.log(newVal);
});
}]);
您正在使用 setTimeout 方法。 Angular 没有观看该活动。使用angular的$timeout服务,就可以看到预期的结果了。
阅读有关 angular 摘要循环和脏检查的更多详细信息。
这是我的 app.js
var MyApp = angular.module('MyApp', []);
MyApp.controller('MyController', ['$scope', function($scope){
$scope.watchMe = 'hey';
$scope.init = function() {
setTimeout(function() {
$scope.watchMe = 'changed!';
}, 3000)
};
$scope.$watch('watchMe', function() {
console.log($scope.watchMe)
});
}]);
我想,3 秒后,我会看到:
'changed!'
在我的控制台中。
相反,我只看到:
'hey'
我在 index.html 中调用我的 init() 函数,这样:
<div ng-controller="MyController" ng-init="init()">
为什么我会看到这个输出?
var MyApp = angular.module('MyApp', []);
MyApp.controller('MyController', ['$scope', '$timeout', function($scope, $timeout){
$scope.watchMe = 'hey';
$scope.init = function() {
$timeout(function() {
$scope.watchMe = 'changed!';
}, 500);
};
$scope.$watch('watchMe', function(newVal, oldVal) {
console.log(newVal);
});
}]);
您正在使用 setTimeout 方法。 Angular 没有观看该活动。使用angular的$timeout服务,就可以看到预期的结果了。
阅读有关 angular 摘要循环和脏检查的更多详细信息。