角度UI-ルータのイベントはrootScope
レベルで焼成し、その大部分は、これらのイベントに関連するコードがRootCtrl
角度:状態変更のスコープメソッドを呼び出すにはどうすればよいですか? <code>stateChangeSuccess</code>などのため
に常駐私はHomeCtrl
とAboutCtrl
で、自宅と約2つの状態を持っていますon stateChange
to 'about'
私は方法をAboutCtrl
で呼びたいと思っています...どうすればこれを達成できますか?
注:私はstateChangeSuccess
コードがRootCtrl
で書かれているよう$scope.RootCtrlMethod
を呼び出すことができますが、AboutCtrl
ために同じことを行うことはできません。
例:RootCtrl
:
function($rootScope, $scope){
$scope.someFun = function(){
console.log("called");
}
$rootScope.$on('routeChangeSuccess', function(event, toState, fromState,...){
if(toState.name == '/'){
$scope.someFun();
}
}
}
このコードをAboutCtrlに含めることをお勧めしますか? – gaurav5430
これが私の提案です。あなたは、そのコントローラに関連するすべてのものにアクセスすることができます。もし適切にクリアされていれば、あなたのアプリにメモリリークは起こりません。その機能をグローバルにしたいのであれば、メソッド実装をいくつかの "シングルトン"サービスに移すべきです。 '$ scope 'への参照はありません。なぜなら、$ scope(別のコントローラ)がない場合、そのメソッドを呼び出す方法がないからです。 –
これは今のところうまくいくようです。 – gaurav5430