Наблюдение на промените в контролерите в Angular

Имам ъглово приложение с два контролера. Ето опростена версия на кода:

var app = angular.module('walkerApp', ['firebase']);

app.controller('AuthenticationController', function($scope) {
    function login(user) {
      ...
    }
});

app.controller('StepsDataController', function($scope) {

});

StepsDataController обслужва данни от бекенда на firebase. AuthenticationController управлява управлението на потребителите. Когато текущият потребител се промени (чрез методите за влизане или регистриране на AuthenticationController,) StepsDataController трябва да се свърже отново с набор от данни, специфични за този потребител.

Как да направя това в Angular? Очевидно имам нужда от внедряване на наблюдател, но не съм сигурен какъв е механизмът.


person Yes - that Jake.    schedule 27.08.2014    source източник
comment
Въпреки че не съм сигурен, струва ми се, че StepsDataController трябва да бъде услуга, а не контролер за приложения - има ли причина да е контролер?   -  person Izhaki    schedule 28.08.2014
comment
Можете да използвате събитие или можете да приложите pub/sub, както в този пример .   -  person PSL    schedule 28.08.2014
comment
Опростих услугата, която трябва да знае каква част от кошера с данни да разгледа в зависимост от текущо влезлия потребител.   -  person Yes - that Jake.    schedule 28.08.2014
comment
Когато потребителят се промени чрез контролера за удостоверяване, трябва да опресните другия контролер? В действителност имате услуга, която StepsDataController използва за извличане на текущата потребителска информация и двата контролера са на една и съща страница едновременно?   -  person PSL    schedule 28.08.2014


Отговори (1)


Винаги можете да използвате $scope.$broadcast или $scope.$emit от субектния контролер и $scope.$on от наблюдателния контролер. Вижте документи за повече.

Не съм сигурен как обхватите на вашите контролери са свързани с йерархията, но винаги можете да използвате $rootScope.$broadcast.

person Izhaki    schedule 27.08.2014