Angular:指令:如何通过需要表单和控制器来链接功能

时间:2015-08-20 15:43:48

标签: javascript angularjs forms angularjs-directive

我有一个名为 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>

我的问题是我无法弄清楚如何通过链接功能传递表单 CoolFormCtrl

如果我注释掉要求:'form'行,那么 WhatsThis = CoolFormCtrl

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

尝试传递第5个参数 WhatsThis = coolForm AndThis = undefined

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

有没有办法将控制器和所需的表单传递给指令链接函数?

1 个答案:

答案 0 :(得分:3)

尝试:

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);
             ...
          }
    };
 }]);

WhatsThis将是一系列控制器。