ui-routerについて$scope
、ご利用にあたっては、this
controllerAs
構文を使用している場合、つまり:
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('app.login', {
url: '/login',
templateUrl: 'modules/login/login.html',
controllerAs: 'login',
controller: 'LoginCtrl',
data: {
authorizedRoles: [USER_ROLES.all]
}
});
}])
私のコントローラーでは、this
の代わりに使用してい$scope
ます。したがって、ログインコントローラーには次のようなコードがあります。
this.func1 = func1;
this.func2 = func2;
this.message = "Hello world!";
しかし、$scope
からグローバルにブロードキャストされたイベントをリッスンするためにも使用しています。$rootScope
これは、記憶が正しければ、交換されているにもかかわらず、 にthis
属するメソッドがないためです。$scope
$scope.$on('event', handler);
したがって、このイベントがブロードキャストされたときに、イベントブロードキャストをリッスンし$rootScope
、 のような他のコントローラーロジックを呼び出しています。func2
$scope.$on('auth-login-failed', function(event) {
// call some other function in controller
});
ハンドラーfunc2
内で呼び出したい場合はどうすればよいですか? $on
コントローラーでこのようなものを初期化する規則を行う必要がありますか?
var that = this;
$scope.$on('auth-login-failed', function(event) {
this.func2();
});
進行する最善の方法と、一般的な慣習がここにあることに興味があります。$scope
と の両方を使用するのは適切this
ですか? 交換できるため、両者の主な違いは何ですか?