不能使用指令控制器并且需要指令控制器(并且它们都可用)

时间:2015-12-02 22:09:52

标签: angularjs angularjs-directive controllers

所以我有一个应该使用ng-form的验证指令。我需要使用他们的控制器,但我还需要将元素click event绑定到我自己的控制器。如果我只使用require我可以访问该表单控制器,如果我只使用controller我可以访问我的控制器,但是如果我同时使用requirecontroller我只会得到访问所需的控制器!

angular.module('app')
  .directive('myValidation', function() {
    return {
      controller: function MyController() {

      },
      link: function($scope, ele, attr, MyCtrl) {
        // All is well
      }
    };
  })
  .directive('myValidationTwo', function() {
    return {
      require: 'form',
      controller: function MyController() {

      },
      link: function($scope, ele, attr, formCtrl) {
        // MyCtrl is not available!
        // formCtrl is not an array of controllers!
      }
    };
  });

如果不可能的话,似乎是一次重大的疏忽!

1 个答案:

答案 0 :(得分:3)

你只需要专门要求它。

angular.module('app')
  .directive('myValidation', function() {
    return {
      controller: function MyController() {

      },
      link: function($scope, ele, attr, MyCtrl) {
        // All is well
      }
    };
  })
  .directive('myValidationTwo', function() {
    return {
      require: ['myValidationTwo', 'form'],
      controller: function MyController() {

      },
      link: function($scope, ele, attr, ctrl) {
        var MyCtrl = ctrl[0];
        var formCtrl = ctrl[1];
      }
    };
  });