在每个Controller的开头运行一个函数

时间:2015-04-27 10:14:59

标签: javascript angularjs controller

我想在每个我喜欢的控制器的开头运行一个函数:

faraWorkspaceApp.controller('AccountController', function () {
    FaraFunctions(); // this function
});

faraWorkspaceApp.controller('DashboardController', function () {
    FaraFunctions(); // this function
});

faraWorkspaceApp.controller('ChangePasswordController', function () {
    FaraFunctions(); // this function
});

放置此代码并防止在角度js中重复FaraFunctions();代码的方法在哪里?

2 个答案:

答案 0 :(得分:3)

我发现的最佳方式是$viewContentLoaded

faraWorkspaceApp.run(function ($rootScope, $location, $state, $templateCache) {
    $rootScope.$on('$viewContentLoaded', function (e) {
        FaraFunctions();
    });
});

答案 1 :(得分:-1)

由于您使用的是ui.router,请改用stateChangeStart

.run(function($rootScope, $location, $state) {


    $rootScope.$on( '$stateChangeStart', function(e, toState  , toParams
                                                   , fromState, fromParams) {

        var isLogin = toState.name === "login";
        if(isLogin){
           return; // no need to redirect 
        }
    });
});