我有一个名为formNavHandler的指令来处理脏检查和从页面到页面的导航。 formNavHandler依赖于一个称为CoolFormCtrl的控制器和一个称为coolForm的表单。我想将CoolFormCtrl和coolForm都传递给formNavHandler的链接函数

angular.module('cool').directive('formNavHandler', [
  '$log', function($log) {
    return {
      restrict: 'A',
      scope: {
        disabled: '=coolFormDisabled'
      },
      controller: 'CoolFormCtrl',
      require: 'form',
      link: function(scope, elem, attrs, WhatsThis) {
        $log.log(WhatsThis);
        ...
      }
    };
  }
]);


像这样使用:

<form name="coolForm" form-nav-handler=true cool-form disabled="!CurrentUser.canUpdate">
  ...
</form>


我的问题是我无法弄清楚如何通过链接函数同时传递form和CoolFormCtrl。

如果我注释掉require:'form'行,则WhatsThis = CoolFormCtrl:

使用require:'form'行未注释WhatsThis = coolForm

当尝试传递第五个参数WhatsThis = coolForm和AndThis = undefined

controller: 'CoolFormCtrl',
require: 'form',
link: function(scope, elem, attrs, WhatsThis, AndThis) {
  $log.log(WhatsThis);
  $log.log(AndThis);


有什么方法可以将控制器和必需的形式都传递给指令链接功能?

最佳答案

尝试:

angular.module('cool').directive('formNavHandler', [
   '$log', function($log) {
       return {
          restrict: 'A',
          scope: {
             disabled: '=coolFormDisabled'
          },
          require: ['formNavHandler', 'form'],
          controller: 'CoolFormCtrl',
          link: function(scope, elem, attrs, WhatsThis) {
             $log.log(WhatsThis);
             ...
          }
    };
 }]);


这将是一个控制器数组。

09-26 19:06