複合リスト ディレクティブがあります。つまり、それ自体がリストになるリスト項目です。
親ディレクティブはコントローラーを定義します。
.directive('parent', function() {
controller: function($scope) {
},
link: function (scope, element, attrs) {
}
})
(項目の) リストには、それ自体で正常に動作する親コントローラーが必要です (なぜそうすべきではないのか..):
.directive('list', function() {
require: '^parent',
link: function (scope, element, attrs, parentCtrl) {
}
})
同じことが具体的なアイテムにも当てはまります。これも問題ありません。
.directive('item', function() {
require: '^parent',
link: function (scope, element, attrs, parentCtrl) {
}
})
アイテムは、それ自体が「リスト」を作成する複合体である場合があります。この構成は、リンク関数内のリスト項目を$compile (ing) することによって行われます。
link: function (scope, element, attrs, parentCtrl) {
...
$compile("<list></list>")(scope)
...
}
これは例外をスローします:
ディレクティブ 'list' で必要なコントローラー 'parent' が見つかりません!
この理由は明らかです。$compile 関数がコントローラーを提供していないため、'parent' の要件を解決できません。
それで、コントローラーを手動で提供しようとしました:
$compile("<list></list>")(scope, null, {'parent': parentCtrl});
これは例外をスローしませんが、必要なときにこのコントローラーを提供しません。
$compile 関数に、同様に評価する必要がある外部コントローラーを受け入れるようにする方法はありますか?