我需要从指令中访问祖先的指令控制器。为此,我在"孩子"上使用require
属性。指令,如下面的代码所示
mmDirectives.directive('mmMapActions', function() {
return {
restrict : 'E',
require : 'ˆmmSidebar',
link : function(scope, elem, attrs, mmSidebarCtrl) {...}
}
}
我在同一个模块上声明了另一个mmSidebar
指令,并且根据需要它有一个关联的控制器:
mmMapsDirectives.directive('mmSidebar', function() {
return {
restrict : 'E',
transclude : true,
scope : {...},
controller : function($scope) {...}
}
}
然后我有以下DOM
<div ng-controller='mmMapInteractionsController as mapInteractionsCtrl'>
<mm-sidebar class='sidebar' ng-if='mapInteractionsCtrl.isInitialised()'
map='mapInteractionsCtrl.map' ...>
<mm-map-actions></mm-map-actions>
</mm-sidebar>
</div>
但是,我仍然会收到旧错误
Error: $compile:ctreq Missing Required Controller
这意味着mmMapActions
无法找到mmSidebar
的控制器,但似乎关于DOM结构的所有内容都是正确的。
我怀疑是要么有另一个祖先控制器mmMapInteractionsController
还是ng-if='...'
(虽然我已经尝试删除它并且抛出了相同的错误)。
您认为导致错误的是什么?
答案 0 :(得分:1)
问题是我在ˆ
使用^
代替require: ^someDirCtrl
...我知道这很愚蠢。