我有一个复合列表指令 - 也就是 - 列表项可以是一个列表本身。
父指令定义控制器:
.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) {
}
})
项目可以在这种情况下,它创建了一个“清单”自己的复合。此组成由完成$编译(荷兰国际集团)的链接功能内列表项:
link: function (scope, element, attrs, parentCtrl) {
...
$compile("<list></list>")(scope)
...
}
会抛出一个异常:
控制器“父”,由指令“清单”要求,不能被发现!
原因很明显 - $编译函数没有提供控制器,因此“父”的要求无法解决。
所以,我已经试过手动提供控制器:
$compile("<list></list>")(scope, null, {'parent': parentCtrl});
这并不抛出异常,但仍然需要时不提供此控制器。
任何想法如何使$ compile函数接受外部控制器,这也应该被评估?
嗨,你有一个工作plunkr什么的?我试图做同样的事情,但注入Ctrl不能达到子项目模板... –
这个答案的作品,但不完整...看看这个jsfiddle:http://stackoverflow.com/questions/34849645 /如何使用 - transcludecontrollers功能于angularjs – tsiorn