【问题标题】:List declared directives/controllers in AngularJS module列出 AngularJS 模块中声明的指令/控制器
【发布时间】:2013-09-25 00:45:50
【问题描述】:

有没有办法列出为给定 Angular 模块定义的所有指令和控制器?例如,假设我在“主”模块中定义了三个控制器(即 angular.module('main').controller('MainCtrl',function() {...})。有没有办法获取列表那三个控制器?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    嗯,真的很难,我认为这不是一件好事,但是:

    var app = angular.module('MyApp', []);
    
    console.log(app._invokeQueue[0][2][1]);
    

    _invokeQueue 是一个数组,如果您为每个获得 [0][2][1] 的条目执行此操作,您将看到模块中每个提供程序的名称。

    如果您单独查找 _invokeQueue,您会看到很多您会喜欢下面的提供者名称但他的类型(指令、控制器、...)的东西;

    但你觉得这是一件棘手的事情,不是一件好事,是一个非常糟糕的做法,但无论如何真的很有趣。

    不要在生产中使用它!

    【讨论】:

    • 当然你可以实现一个自定义服务,每个控制器都会对这个服务说:我是......然后你可以调用这个服务
    • 这对于在使用 uglifyJS 对我的项目进行变量修改后识别依赖注入问题非常有用。谢谢! angular.module('myApp')['_invokeQueue'].forEach(function(value){ console.log(value[2][1]) })你可以看到DI Annotation的用法,或者没有:D
    • 如果你使用values[2][0],你实际上会得到一个可注射名称列表angular.module('qirt')['_invokeQueue'].forEach(function(value){ console.log(value[2][0]) })
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多