所以我有一个应该使用ng-form的验证指令。我需要使用他们的控制器,但我还需要将元素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!
}
};
});
如果不可能的话,似乎是一次重大的疏忽!
答案 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];
}
};
});