0

私は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> '
    };
});

コールバック内でコントローラのメソッドとプロパティを使用できるように、コールバック内でコントローラ インスタンスへの参照を取得する方法はありますか?

4

1 に答える 1