【发布时间】:2017-09-05 06:32:14
【问题描述】:
我正在使用 angularJS 1.4.8,昨天我注意到 $scope.$watch 不会触发每次导致我的应用程序出现错误的更改。
有没有办法强制它立即对每个更改起作用? 就像在这段代码中一样,在消息的每次更改中,我都希望手表中的函数触发:
(function(){
angular.module('myApp', [])
.controller('myAppController', myAppController)
function myAppController($scope){
console.log('controller loading !');
$scope.message = 'message1';
$scope.$watch('message', function(newMessage){
console.log('newMessage', newMessage)
});
function changeMessage(){
$scope.message='hi';
$scope.message='hi12';
}
changeMessage();
}
})();
控制台将打印:
controller loading !
newMessage hi22
plunker 链接https://plnkr.co/edit/SA1AcIVwr04uIUQFixAO?p=preview
编辑: 我真的很想知道除了用超时包装更改并使用范围应用之外,是否还有其他方法,在我的原始代码中,我在多个地方更改范围属性,我想避免每次更改都使用这个。
【问题讨论】:
-
检查this
-
@Durga iv'e 多个地方,我在原始代码中更改了我的对象,除了将所有内容包装在超时范围内之外,还有其他方法吗?
-
我认为是因为
$watch函数仅在 angular 完成编译后激活。因此,当您更改$scope时,在控制器初始化后,$watch将触发。 -
您只需要
message更改scope来触发侦听器吗?
标签: javascript angularjs