2016-07-28 17 views
-1

私はコントローラが実行されるたびに呼び出さなければならない関数validateSesionを持っています。AngularJsのすべてのコントローラで関数を呼び出す方法

すべてのコントローラで関数を呼び出すことなく関数をトリガする方法はありますか?

+0

あなたがしようとしたものを投稿してください! –

+0

コントローラがインスタンス化されるたびに関数を呼び出すのは確実でしょうか? 1つのページに複数のコントローラを置くのが一般的です。期待していた機能よりもはるかに多くの呼び出しが必要になることがあります。 – 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(); 
    }); 
} 
関連する問題