我有一个复合列表指令,也就是说,一个列表项本身可以是一个列表。
父级指令定义了控制器:
.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(编译)列表项来完成的:
link: function (scope, element, attrs, parentCtrl) {
...
$compile("<list></list>")(scope)
...
}
出现了异常:
指令'list'需要控制器“parent”,但找不到该控制器!
显然,这是因为$compile函数没有提供控制器,导致无法解析‘parent’的要求。因此,我尝试手动提供控制器:
$compile("<list></list>")(scope, null, {'parent': parentCtrl});
这不会抛出异常,但在需要时仍然无法提供此控制器。
有什么想法可以使$compile函数接受外部控制器并进行评估?