我正在尝试编写我的 Angular 指令,使其大部分功能都包含在它们的 Controller 代码中,链接函数仅用于将两个不同的指令 Controller 绑定(bind)在一起。
当涉及到“需要” Controller 和定义“ Controller ”时,我遇到了问题。我应该如何在链接函数中获取对我指定的 Controller 的引用?
示例代码(当然没有所有周围的 module.directive 东西)
return {
require:'ngModel',
controller: 'CustomDirectiveCtrl',
link: function(scope, element, attrs, controllers)
{
console.log(controllers);
}
};
“ Controller ”包含 ngModelController,但没有给我访问 CustomDirectiveCtrl 的方法。
如何从链接函数访问 ngModelController 和 CustomDirectiveCtrl?
最佳答案
有时,除非您尝试向其他人解释问题,否则您永远不会发现问题。
在查看 Angular JS 的 ngModel 的源代码后,我找到了解决方案。这是修复我上面的代码的方法,以防万一其他人遇到同样的理解问题:
https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L2347
module.directive('customDirective', function(){
return {
require:['customDirective', 'ngModel'],
controller: 'CustomDirectiveCtrl',
link: function(scope, element, attrs, controllers){
// CustomDirectiveCtrl is controllers[0],
// NgModelController is controllers[1]
console.log(controllers);
}
}
});
我认为需要有不同的语法来获取您自己的 Controller ,而不是获取不同模型的 Controller 。它比我想象的要简单。
关于javascript - Angular JS 指令定义 - 需要 ngModelController 以及自定义 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685405/