2016-07-28 3 views
-1

У меня есть функция validateSesion, которую я должен вызывать каждый раз, когда выполняется контроллер.Как вызвать функцию во всех контроллерах в AngularJs

Существует способ запуска функции без посылки вызова функции во все контроллеры?

+0

Пожалуйста, после того, что вы пробовали? –

+0

Вы уверены, что хотите вызывать функцию каждый раз при создании экземпляра контроллера? это обычная практика иметь несколько контроллеров на странице, что может означать еще несколько вызовов указанной функции, чем ожидалось ... – Claies

+0

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

ответ

1

Способ, которым я бы рекомендовал выполнить такой вызов, заключается в создании обработчиков событий для изменения маршрута. Таким образом, каждый раз, когда вы меняете маршрут или состояние (если вы используете ui-router), вы можете запустить свой код.

Вы бы поместить это в функции запуска приложения и прикрепить обработчик событий к $ rootScope, как показано ниже:

angular.module('app', [ 
    //Your Dependencies Here 

    ]).run(init); 

function init($rootScope, sessionService) { 
    //ngRoute 
    $rootScope.$on('$routeChangeStart', function (angularEvent, next, current) { 
     sessionService.validateSession(); 
    }); 

    //ui-router 
    $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 
     sessionService.validateSession(); 
    }); 
} 
Смежные вопросы