2016-05-26 2 views
1

Я хочу, чтобы повторно инициализировать службу после выхода из системыКак повторно инициализировать службу или завод в угловом JS

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

app.controller('ControllerA', ['$scope','serviceA',function($scope, serviceA)  { 

    $scope.initializeA = function(){   
     serviceA.initialize("Chris"); 
    }; 
}]); 

и сервиса

app.service('serviceA',function(){ 
var service={}; 
service.initialize=function(){} 
}); 

У меня есть много услуг, как выше. Я хочу очистить все данные внутри этих служб, когда я выхожу из системы.

Скажите, пожалуйста, лучший способ сделать это.

ответ

0

Я могу придумать несколько способов сделать это, но давайте идти с одним:

Вы можете подписаться на $ уничтожить событие, которое происходит, когда контроллер собирается быть, ну, уничтожали. Когда это произойдет, вы можете вызвать услугу, которую вы ввели вашему контроллеру, и инициализировать его. Это гарантирует, что все сервисы, которые были использованы, теперь очищаются (при условии, что ваш выход из системы - это другое состояние в вашем приложении, например, с помощью ui-router, в котором все компоненты, которые не находятся в текущем состоянии, будут уничтожены).

0

Существует множество способов достижения желаемого.

Так вы говорите, что на выходе из системы, которую вы хотите удалить данные внутри службы, и вы не говорите ничего о Redirect в или разрушения контроллеров. Я прошу простую реализацию $scope.$emit и $rootScope.$on.

Так что на вашей аутентификации контроллер на выходе из системы вам следует сделать что-то вроде этого:

.controller('authenticationCtrl',[... 
    //request for logout 
    ... 
     //On logout Success 
     $scope.$emit('logout'); 
}]); 

А в вашем службы вы получите его, как это:

... 
.service('serviceA', ['$rootScope',function($rootScope){ 
    $rootScope.$on('logout', function() { 
     //TODO: clear all the data you want 
    }); 
} 

Другой вариант, если модуль строится снова (перезагрузка/перенаправление), вы можете использовать функциональность , чтобы установить данные:

angular.module('plunker') 
.run(
    function (serviceA) { 

     // serviceA.initialize() 
    }); 
Смежные вопросы