2016-07-12 8 views
0

私は$rootScope.$on('$routeChangeSuccess', function(event, next){...})を使ってみましたが、時にはnext.scopeは未定義です。コントローラーの$scopeの準備が整ったら使用できるイベントはありますか?Angularにはコントローラが作成されたときのイベントがありますか?

新しいルートがロードされたときにいつでもアクションを実行したいと思っています。すべてのコントローラの先頭に関数呼び出しを追加する必要はありません。

+1

uはNG-INITを試してみましたか? – Arif

+0

私はこの状況に該当するとは思わない。 –

答えて

1

私が知る限り、コントローラのスコープが準備ができたらそれが出るという事実は記録されていません。

しかし、どのようなuは次のコードを使用して目的を達成することができますが、それは少しトリッキーです:

$rootScope.$on('$routeChangeSuccess', function(evt, to, params) { 
      console.log(to.scope); // undefined 
      $rootScope.$evalAsync(function(){ 
       console.log(to.scope); //it is ready 
      }) 
     }); 
+0

ありがとうございます。私は$ scopeが作成された後にのみ$ evalAsync()のコードが実行されることを確信できますか? –

+1

$ evalAsync()の関数は現在の$ digest()の後に実行され、次のコントローラのスコープの作成は$ routeChangeSuccessが起動されたときにダイジェストでスケジューリングされるので、これは必須です。 – MMhunter

関連する問題