我有一個模板,它從服務中獲取數據。服務中的數據由指令更新。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