コードを Angular 1.3 から Angular 1.5 コンポーネントと ES6 コントローラーに移行中です。SOで何かを見つけようとしましたが、十分に役に立ちませんでした。以下の方法以外の範囲でイベントを視聴する方法について提案が必要です。または、ディレクティブからスコープ イベントをトリガーする方法。また、代替案が存在する場合は、正しい方法を提案してください。
角度 1.3
angular
.module('test')
.directive('test', function() {
return {
link: function(scope) {
scope.$on('$stateChangeStart', function(event, toState, toParams) {
//logic goes here..
});
}
}
});
角度 1.5/ES6
class TestController {
/* @ngInject */
constructor($scope) {
this._$scope = $scope;
}
$onInit() {
this._$scope.$on('$stateChangeStart', (event, toState, toParams) => {
//logic goes here
});
}
}
angular
.module('test')
.component('test', {
controller: TestController
});
編集:
ここで $watch ではなく $on の代わりに興味があるのは、変数を監視しているだけで $onChange が $watch を置き換えることができるからです。angular 1.3コードの100%を1.5に移行できるわけではないため、スコープイベントをリッスンしたいのですが、スコープでイベントをトリガーするディレクティブがまだあります!