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ですか? 交換できるため、両者の主な違いは何ですか?