2016-10-05 5 views
1

у меня есть родительский контроллер с двумя впрыскиваются контроллеры ребенка следующим образом:Очистить данные на выходе из системы с инжектированными контроллерами (угловой)

.controller('parentCtrl', ['$scope', '$http', '$controller', '$uibModal', 
    function ($scope, $http, $controller, $uibModal) { 

    $controller('firstChildCtrl', { $scope: $scope }) 
    $controller('secondChildCtrl', { $scope: $scope }) 

}]) 

Когда пользователь выходит из системы, контроллер Логина выдает событие выхода из системы:

$scope.$emit('logout'); 

Все мои другие контроллеры очистить свои данные о получении этого события следующим образом:

$scope.initial = []; 

    $rootScope.$on("logout", function (event) { 
     $scope.activities = angular.copy($scope.initial); 
    }); 

Итак, мой вопрос: как я могу заставить родительский контроллер очищать данные в своих дочерних областях (потому что это не так)?

Заранее благодарен!

+2

Я бы предложил использовать эту услугу (или услуги) для этой информации, а не передавать ее по областям. Затем при выходе из системы, вместо того, чтобы испускать событие, вы можете напрямую очистить данные от служб (ов) –

+0

. Спасибо. У меня есть некоторые услуги для получения данных с сервера. Я не уверен, как очистить данные от них. Я предполагаю, что было бы целесообразно вводить службы в контроллер вместо контроллеров. –

+0

Теперь я переписал свой контроллер, чтобы использовать все службы вместо инъекционных контроллеров. Теперь мне просто нужно выяснить, как очистить данные от службы. Если вы хотите повернуть свой комментарий в ответ, я с радостью буду отмечать его как принятый ответ. –

ответ

0

В итоге у меня был контроллер, в котором фабрики (службы для получения данных) были внешними по отношению к контроллеру, и я ввел несколько контроллеров в мой контроллер.

.controller('multiCtrl', ['$scope', '$rootScope', '$http', '$uibModal', '$q', 'getApples', 'getPears', 
     function ($scope, $rootScope, $http, $uibModal, $q, getApples, getPears) { 

var myApples = getMyApples.fetch(function (apples) { 
     $scope.apples = apples; 

     var theApples = $scope.apples; 

     }); 

var myPears = getMyPears.fetch(function (pears) { 
     $scope.pears = pears; 

     var thePears = $scope.pears; 

     }); 
});