javascript - Angular JS 指令定义 - 需要 ngModelController 以及自定义 Controller

标签 javascript angularjs dependency-injection angularjs-directive angularjs-compile

我正在尝试编写我的 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/

相关文章:

javascript - Google 可视化图表对选择事件数据发出警报

javascript - 错误: Ajax call to server inside jquery function

asp.net-mvc-3 - Ninject MVC 3 - 将依赖项注入(inject)模型和 Controller

javascript - 有人用过 Mongoose-auth 吗?如何覆盖 findOrCreate Users?

javascript - window.onunload() 在 Firefox 中不起作用?在 IE 中工作吗?

javascript - Angular ui-router加载 View 两次

javascript - 在angularjs中一次选择一个项目

angularjs - AngularJS中如何向上滑动和向下滑动?

c# - 当简单的依赖注入(inject)就足够了时为什么要使用工厂模式

c# - 使用简单注入(inject)器注册集合