Как я могу передать свой заводской результат другому контроллеру?

0

Я хочу передать свой результат от одного контроллера другому, у меня есть 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, тогда я не получаю предупреждение.

Есть идеи?

Теги:
ionic-framework
ionic

1 ответ

3

Вы можете использовать $rootScope.$broadcast чтобы транслировать ваше событие и в свой второй контроллер $scope.$on $rootScope.$broadcast чтобы поймать событие

Кажется, вы сделали это правильно. Однако, для этого, оба контроллера ДОЛЖНЫ быть уже загружены.

Это так? Если нет, то вы не можете поймать событие в несуществующий контроллер;)

  • 0
    Я не уверена. Как проверить, загружены ли контроллеры или нет.
  • 0
    добавьте предупреждение в начале вашего второго контроллера. если у вас есть предупреждение, то контроллер загружен.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню