如何调用AngularJs中所有控制器中的函数

时间:2016-07-28 16:08:41

标签: angularjs

我有一个函数validateSesion,每次执行一个控制器时我都需要调用它。

有一种方法可以在不调用所有控制器中的函数的情况下触发该函数吗?

1 个答案:

答案 0 :(得分: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();
    });
}