13

ディレクティブが作成するスコープにデータを入れようとしています。これが私のjsFiddleです。

次のコードはうまくいきます

.directive('directive1', function () {
    return: {
        scope: true,
        controller: function ($scope) {
            $scope.name = 'world';
        }
    }
})

<div directive1>
    <p>{{ name }}</p>
</div>

しかし、これらのコードは機能しません

.directive('directive2', function () {
    return: {
        scope: true,
        controller: function () {
            this.name = 'world';
        },
        controllerAs: 'testCtrl'
    }
})

<div directive2>
    <p>{{ testCtrl.name }}</p>
</div>

私のコードに何か問題がありますか? または私は何かについて誤解しましたcontrollerAsか?

4

2 に答える 2

16

ControllerAs のディレクティブのサポートは 1.2.0 で追加された1.0.2ため、リンクされたフィドルではなく、最新バージョンを使用する必要があります。このようにして、あなたが望むように動作します。

于 2013-09-21T11:28:46.143 に答える
-1

ディレクティブ コントローラーと通常のコントローラーを混同しないでください。つまり、ディレクティブには、何かを制御するコントローラーを含めることができます。しかし、それは通常のコントローラーと同等ではありません!

ディレクティブ ロジックをディレクティブ コントローラーに入れることは実際には問題ありませんが、実際には、ディレクティブ コントローラーはクロス ディレクティブ通信に使用されます。あるディレクティブのコントローラー インスタンスは、同じ要素 (または子要素) にある別のディレクティブに挿入できます。

"controller as" 式は、通常のコントローラー用です。したがって、自分自身を支持して、ロジックをディレクティブ リンク関数に入れます。

于 2013-09-21T12:54:53.610 に答える