不能使用指令控制器并且需要指令控制器(并且它们都可用)
Can't use a Directive Controller AND Require a Directive Controller (and have them both be available)
所以我有一个应该与 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!
}
};
});
如果这不可能的话,这似乎是一个重大疏忽!
您只需要具体要求即可。
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];
}
};
});
所以我有一个应该与 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!
}
};
});
如果这不可能的话,这似乎是一个重大疏忽!
您只需要具体要求即可。
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];
}
};
});