我有一个模板,它从服务中获取数据。服务中的数据由指令更新。AngularJS:服务中的数据未更新
数据更新后,它不会在模板中更新。
// In my template
{{service.get()}}
// In my service
.service('service', function($http){
var _val = 5;
return{
get:function(){
return val;
},
set:function(val){
_val = val;
}
};
});
// In my directive
var someDirective = angular.module('app.someDirective',[]);
someDirective.directive('someDirective', ['service', function(service) {
return function(scope, element, attrs){
$(element).on('scroll', function(event){
service.set(15);
});
};
}]);
如果我在任何其他地方(如其他控制器)调用service.set(x)它可以100%正常工作。
也许有人知道,我做错了什么。 (非常感谢)
编辑 为了让多一点明确:
当页面负载, '5' 则显示(正确)。 但是,当值应该更新时,service.set()函数被正确调用(来自指令),但是模板中没有任何变化。
如果我调用service.set()任何其他,它的工作原理(值在模板中更新)。
非常感谢。而已。作品100%完美,应该如何。但我真的不知道这里的问题是什么,以及$ timeout如何帮助。 – Tream 2014-10-27 14:56:21
'$ timeout'调度要在下一个摘要循环中运行的代码。出于某种原因,您的事件发生在$ digest已经完成执行观察者时。所以你可以手动指示它再次运行。 – dfsq 2014-10-27 15:09:36