簡體   English   中英

從服務更新Angular控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM