我有一个名为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>
我的问题是我无法弄清楚如何通过链接函数同时传递form和CoolFormCtrl。
如果我注释掉require:'form'行,则WhatsThis = CoolFormCtrl:
使用require:'form'行未注释WhatsThis = coolForm
当尝试传递第五个参数WhatsThis = coolForm和AndThis = undefined
controller: 'CoolFormCtrl',
require: 'form',
link: function(scope, elem, attrs, WhatsThis, AndThis) {
$log.log(WhatsThis);
$log.log(AndThis);
有什么方法可以将控制器和必需的形式都传递给指令链接功能?
最佳答案
尝试:
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);
...
}
};
}]);
这将是一个控制器数组。