В контроллере А отправляю запрос через фабричный метод, а затем хочу получить результат в контроллер Б. Проблема в том, что если запускаю фабричный метод по дефолту в контроллере А, сразу же при его инициализации, то почему-то event, который запускается $rootScope.$broadcast('hi', msg); не приходит в controllerB, а приходит только по нажатию на кнопку в контроллере А. Я пробовал обновляться и через $rootScope.apply() - не помогло. Как обновить scope в контроллере Б без клика на кнопку в контроллере А, а сразу же при запуске контроллера А?
Вот пример
jsfiddle.net/ZvnbR/27ControllerAapp.controller('ControllerA', ['Factory', '$scope', '$rootScope', function(Factory, $scope, $rootScope) {
$scope.add = function() {
Factory.send('new Message!'); //it works!
}
Factory.send('new Message!'); //doesnt' work
}]);
ControllerBapp.controller('ControllerB', ['$scope', '$rootScope', function($scope, $rootScope) {
$scope.$on('hi', function(event, msg) {
console.log('event fired!');
$scope.increment = msg;
});
}]);
Factoryapp.factory('Factory', function($rootScope) {
var self = this;
self.send = function(msg) {
console.log('Factory method run');
$rootScope.$broadcast('hi', msg);
}
return self;
});
Это упрощенный пример, в реальности я в фабрике получаю данные с сервера их нужно передать в scope.