[英]Angular not updating view when changed by service called from controller
[英]Updating Angular Controller from Service
我有一個Angular服務,它從異步調用中獲取一些屬性設置。 在此調用完成時,引用這些屬性的控制器已經從服務中獲取了它們的值。 我當前的解決方案是在服務中調用$ rootScope。$ broadcast並在控制器中處理該事件以更新屬性。
服務代碼:
this.modelInfo = resultFromAsyncCall;
$rootScope.$broadcast('settingsApplied');
控制器代碼:
$scope.modelInfo = MyService.modelInfo;//Service hasn't recieved async response yet.
$scope.$on('settingsApplied', function(event, args){
$scope.modelInfo = MyService.modelInfo;
});
我的問題是:在更新服務時,是否有比廣播/捕獲事件更干凈的方法來更新從屬控制器?
使用諾言(首選)或$ watch 。
諾言
控制器中的代碼:
MyService.GetModelInfo.then(function(result) {
$scope.modelInfo = result;
});
看
控制器中的代碼:
$scope.$watch(function() {
return MyService.modelInfo
}, function(newValue, oldValue) {
if (newValue) {
$scope.modelInfo = newValue;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.