基本上我在控制器中有一个监听器功能。当调用此函数时,我想更新我的UI /范围,但它没有发生。这是我的代码:
HTML
<div ng-app="myApp">
<div ng-controller="MainCtrl as mainCtrl">
Main {{mainCtrl.foo}} <br/>
</div>
</div>
JS
var myApp = angular.module('myApp', []);
var my = {};
my.MainCtrl = function() {
this.foo = 'waiting';
this.notifier = new other.Notifier();
this.notifier.addListener(this.update.bind(this));
}
my.MainCtrl.prototype.update = function() {
this.foo = 'updated';
alert('Updated');
}
// register all controllers
myApp.controller('MainCtrl', my.MainCtrl);
var other = {};
other.Notifier = function() {
};
other.Notifier.prototype.addListener = function(callback) {
setTimeout(callback, 1000);
};
小提琴
答案 0 :(得分:1)
这是人们对AngularJS的常见挂断之一。
setTimeout不会触发$scope.$apply()
。如果您使用了角度自己的$timeout
,它会为您做到这一点。
我看到你没有使用任何$ scope变量。我不熟悉那种新语法。