2016-04-27 4 views
0

У меня есть Угловая служба, которая получает некоторые свойства, установленные с асинхронного вызова. К моменту завершения этого вызова контроллеры, которые ссылаются на эти свойства, уже получили свои значения из службы. Мое текущее решение - вызывать $ rootScope. $ Broadcast в службе и обрабатывать это событие в моем контроллере для обновления свойств.Обновление углового контроллера из службы

Service Code:

this.modelInfo = resultFromAsyncCall; 
    $rootScope.$broadcast('settingsApplied'); 

Controller Код:

$scope.modelInfo = MyService.modelInfo;//Service hasn't recieved async response yet. 
    $scope.$on('settingsApplied', function(event, args){ 
     $scope.modelInfo = MyService.modelInfo; 
    }); 

Мой вопрос: Есть ли уборщик способ обновить зависимые контроллеры, когда сервис обновляется, чем вещания/ловли Мероприятия?

+0

Используйте обещания. Это установит вашу ценность только после того, как вы ее получите. Никакого просмотра или вещания не требуется. –

ответ

1

Используйте обещание (желательно) или $watch.

Promise

код в контроллере:

MyService.GetModelInfo.then(function(result) { 
    $scope.modelInfo = result; 
}); 

Часы

код в контроллере:

$scope.$watch(function() { 
     return MyService.modelInfo 
    }, function(newValue, oldValue) { 
     if (newValue) { 
      $scope.modelInfo = newValue; 
     } 
    }); 
Смежные вопросы