2016-07-12 5 views
0

Ich habe versucht mit $rootScope.$on('$routeChangeSuccess', function(event, next){...}), aber manchmal next.scope ist undefiniert. Gibt es ein Ereignis, das ich verwenden kann, sobald ein Controller $scope bereit ist?Hat Angular ein Ereignis, wenn ein Controller erstellt wird?

Ich habe einen Dienst, der eine Aktion ausführen soll, wenn eine neue Route geladen wird, und ich möchte lieber keinen Funktionsaufruf am Anfang jedes Controllers hinzufügen.

+1

haben u ng-init versucht? – Arif

+0

Ich glaube nicht, dass das in dieser Situation anwendbar ist. –

Antwort

1

Soweit ich weiß, gibt es kein dokumentiertes Ereignis, das ein Controller-Bereich ausgibt, wenn es fertig ist.

Aber was u Ihren Zweck mit dem folgenden Code erreichen können, aber es ist ein wenig kompliziert:

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

Danke. Ich frage mich, können wir sicher sein, dass der Code in $ evalAsync() nur ausgeführt wird, nachdem der $ scope erstellt wurde? –

+1

Dies sollte sein, da die Funktion in $ evalAsync() nach dem aktuellen Winkel $ digest() ausgeführt wird und die Erstellung des Bereichs für den nächsten Controller im Digest geplant wird, wenn $ routeChangeSuccess ausgelöst wird. – MMhunter

Verwandte Themen