Я хочу передать свой результат от одного контроллера другому, у меня есть IntroController, где я вызываю статью Service factory. после получения ответа от фабрики статей я хочу передать ее результат в статью Ctrl (контроллер статьи), но я не могу передать результат в статью Ctrl (контроллер статьи).
// Intro Ctrl code here
angular.module('starter.controllers')
.controller('IntroCtrl', function($scope, $state, $ionicSlideBoxDelegate,$q,articleService,$rootScope) {
articleService.getArticles().then(function(res) {
$rootScope.$broadcast('articleFetch', res);
$scope.$emit('articleFetch', res);
}, function(err) {
alert("error");
});
});
// articleService factory code here
angular.module('starter.controllers')
.factory('articleService', function ($http, $q) {
return {
getArticles: function() {
var deferred = $q.defer();
$http({
url: "my-link.com/secure-mobile/getallinfo?access_token=b8fa2380632307d58834d037d7dc65fc",
data: { starLimit: 0, endLimit: 100,created_date: 0 },
method: 'POST',
withCredentials: true,
}).success(function (data, status, headers, config) {
deferred.resolve(data);
}).error(function (err) {
deferred.resolve(0);
})
return deferred.promise;
}
}
});
Я хочу передать этот результат статьиService (т.е. res) в контроллер ArticleCtrl.
// ArticleCtrl code here
angular.module('starter.controllers')
.controller('ArticleCtrl', function($scope,$rootScope) {
alert("fff");
$rootScope.$on('articleFetch', function (event, args) {
alert(args);
$scope.articles = args;
});
});
когда я вызываю $ rootScope. $ on в ArticleCtrl, тогда я не получаю предупреждение.
Есть идеи?
Вы можете использовать $rootScope.$broadcast
чтобы транслировать ваше событие и в свой второй контроллер $scope.$on
$rootScope.$broadcast
чтобы поймать событие
Кажется, вы сделали это правильно. Однако, для этого, оба контроллера ДОЛЖНЫ быть уже загружены.
Это так? Если нет, то вы не можете поймать событие в несуществующий контроллер;)