2016-07-28 2 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(); 
    }); 
} 
관련 문제