親のコントローラーを取得する必要があるため、ディレクティブには次のように 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 を返します。
私は何を間違っていますか?