4

親のコントローラーを取得する必要があるため、ディレクティブには次のように require プロパティがあります。

module.directive('tag', function () {
    return {
        require: '?^tag',
        restrict: 'E',
        controller: function () {
            this.payload = getPayload();
        },
        link: function (scope, element, attrs, ctrl) {
            usePayload(ctrl.payload);
        }
    };
});

ただし、リンク関数の ctrl パラメーターは、親のコントローラーではなく、現在のディレクティブのコントローラーを返します。AngularJSのドキュメントはこれについて明確です:

?^ - 要素の親を検索して必要なコントローラーを見つけようとするか、見つからない場合は null を返します。

私は何を間違っていますか?

4

1 に答える 1