在子指令中需要其他指令控制器
Requiring Other Directive controller in child Directive
我在 questionnaireItemsGroup
指令的模板中定义了一个 questionnaireItem
指令。
在 questionnaireItem
指令中,我需要 "^questionnaireItemsGroup"
父窗体:
<form name="questionnaireForm" autocomplete="off" novalidate>
<ol>
<li>
<questionnaire-items-group data-ng-model="questionnaireItemsGroupModel">
</questionnaire-items-group>
</li>
</ol>
</form>
questionnaireItemsGroup
模板:
<div>
<ol class="">
<li class="mm-li" ng-repeat="questionnaireItem in model.questionnaireItems">
<questionnaire-item data-ng-model="questionnaireItem" view-state="{{viewState}}">
</questionnaire-item>
</li>
</ol>
</div>
questionnaireItem
指令中的要求:
require: ['?ngModel', '^questionnaireItemsGroup'],
我收到错误:
Error: [$compile:ctreq] Controller 'questionnaireItemsGroup', required by directive 'questionnaireItem', can't be found!
需要 ngModel
或 form
控制器不是问题,之前做过几次。指令的 link
函数中的参数控制器由一个控制器数组组成。
--但这也适用于 including/requiring 指令,对吗?我是不是忽略了什么?
我猜,由于您发布的代码没有显示,问题是您的指令 questionnaireItemsGroup
没有定义控制器:
.directive("questionnaireItemsGroup", function(){
return {
controller: angular.noop, // this should fix it
// ...
};
});
我在 questionnaireItemsGroup
指令的模板中定义了一个 questionnaireItem
指令。
在 questionnaireItem
指令中,我需要 "^questionnaireItemsGroup"
父窗体:
<form name="questionnaireForm" autocomplete="off" novalidate>
<ol>
<li>
<questionnaire-items-group data-ng-model="questionnaireItemsGroupModel">
</questionnaire-items-group>
</li>
</ol>
</form>
questionnaireItemsGroup
模板:
<div>
<ol class="">
<li class="mm-li" ng-repeat="questionnaireItem in model.questionnaireItems">
<questionnaire-item data-ng-model="questionnaireItem" view-state="{{viewState}}">
</questionnaire-item>
</li>
</ol>
</div>
questionnaireItem
指令中的要求:
require: ['?ngModel', '^questionnaireItemsGroup'],
我收到错误:
Error: [$compile:ctreq] Controller 'questionnaireItemsGroup', required by directive 'questionnaireItem', can't be found!
需要 ngModel
或 form
控制器不是问题,之前做过几次。指令的 link
函数中的参数控制器由一个控制器数组组成。
--但这也适用于 including/requiring 指令,对吗?我是不是忽略了什么?
我猜,由于您发布的代码没有显示,问题是您的指令 questionnaireItemsGroup
没有定义控制器:
.directive("questionnaireItemsGroup", function(){
return {
controller: angular.noop, // this should fix it
// ...
};
});