2015-12-02 2 views
1

Итак, у меня есть директива валидации, которая должна работать с ng-формой. Мне нужно использовать их контроллер, но также мне нужно связать элементы click event с моим собственным контроллером. Если я просто использую require, я могу получить доступ к этому контроллеру формы, если я просто использую controller. Я могу получить доступ к своему контроллеру, но если я использую как require, так и controller, я получаю доступ к нужному контроллеру!Нельзя использовать контроллер директивы И требовать от контроллера директивы (и иметь их обоих)

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! 
     } 
    }; 
    }); 

Похоже, что основной надзор, если это невозможно!

ответ

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

Я пробовал так много вариантов. Я не пробовал фактическое название директивы. Благодаря! –

Смежные вопросы