Francisco Rosello
Francisco Rosello

Reputation: 13

How to call a function in all controllers in AngularJs

I have a function validateSesion that i need to call every time a controller is executed.

There is a way to trigger the function without putting the call to the function in all the controllers?

Upvotes: 0

Views: 545

Answers (1)

dmungin
dmungin

Reputation: 812

The way I would recommend accomplishing such a call would be to create event handlers for your route changes. This way every time you change your route or state (if you are using ui-router) you can run your code.

You would place this in your app's run function and attach the event handlers to the $rootScope as shown below:

    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();
    });
}

Upvotes: 1

Related Questions