私はangularjsプロジェクトに取り組んでおり、angularjs 2にできるだけ近づけて実装しようとしています.
angularjs 2 では ng-controller と $scope がなくなるため、ng-controller の代わりにディレクティブを使用しています。また、controllerAs-syntax を使用して $scope の使用を回避しようとしています。
私のディレクティブは次のようになります。
angular.module('myApp').directive('myDirective', function() {
return {
controller: function() {
this.data = '123';
},
controllerAs: 'ctrl',
template: ' <p>{{ctrl.data}}</p> '
};
});
これまでのところ、すべて正常に動作しています。コールバック関数内でコントローラーのメソッドまたはプロパティを呼び出そうとすると、問題が発生します。この場合、'this' は実際のコントローラ インスタンスを参照していません。
例:
angular.module('myApp').directive('myDirective', function($http) {
return {
controller: function() {
this.data = '';
this.loadData = function(){
$http.get("someurl.com")
.success(function(response) {
this.data = response.data; // --> this doesn't work
});
}
this.loadData();
},
controllerAs: 'ctrl',
template: ' <p>{{ctrl.data}}</p> '
};
});
コールバック内でコントローラのメソッドとプロパティを使用できるように、コールバック内でコントローラ インスタンスへの参照を取得する方法はありますか?