在子指令中需要其他指令控制器

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!

需要 ngModelform 控制器不是问题,之前做过几次。指令的 link 函数中的参数控制器由一个控制器数组组成。

--但这也适用于 including/requiring 指令,对吗?我是不是忽略了什么?

我猜,由于您发布的代码没有显示,问题是您的指令 questionnaireItemsGroup 没有定义控制器:

.directive("questionnaireItemsGroup", function(){
  return {
    controller: angular.noop, // this should fix it
    // ...
  };
});