我有一个复合列表指令 - 即 - 一个可以是列表本身的列表项。
父指令定义控制器:
.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)
...
}
引发异常:
找不到指令“列表”所需的控制器“父级”!
原因很明显 - $compile 函数没有提供控制器,因此无法解决“父”的要求。
所以我尝试手动提供控制器:
$compile("<list></list>")(scope, null, {'parent': parentCtrl});
它不会引发异常,但在需要时仍不提供此控制器。
知道如何使 $compile 函数接受也应该评估的外部控制器吗?