我试图编写我的Angular指令,使其大部分功能都在其控制器的代码中,链接函数只是用于将两个不同的指令控制器绑定在一起。
当涉及到“控制器”和“控制器”这两个问题时,我遇到了问题。定义也是如此。我怎么能在链接功能中获得我指定的控制器的参考?
示例代码(当然没有所有周围的module.directive东西)
return {
require:'ngModel',
controller: 'CustomDirectiveCtrl',
link: function(scope, element, attrs, controllers)
{
console.log(controllers);
}
};
'控制器'包含ngModelController,但没有给我一种访问CustomDirectiveCtrl的方法。
如何从链接功能访问ngModelController和CustomDirectiveCtrl?
答案 0 :(得分:1)
有时候,在您尝试向其他人解释之前,您永远不会发现问题。
在查看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);
}
}
});
我认为需要一个不同的语法来获取自己的控制器,而不是获得一个不同的模型的控制器。它比我想象的要简单。