AngularJS - 获取所有注册服务的列表?

2023-12-22

我可以获得所有已注册指令、服务、控制器等的列表吗?在运行时 . . . ?


您可以获得每个模块的提供者列表(即服务/指令/控制器/工厂/等),尽管该列表有点神秘。

假设您有以下内容:

var mod = angular.module('myModule', []);
mod.factory('fact1', function($dependency1, $dependency2){ ... });
mod.service('serv1', function($dependency3, $dependency4){ ... });
mod.controller('ctrl1', function($dependency2, $dependency3){ ... });
mod.factory('fact2', function($dependency1, $dependency4){ ... });
...

然后mod变量将包含一个名为的属性mod._invokeQueue它将包含属于该模块的所有提供者的数组。这_invokeQueue看起来像这样:

[
    ['$provide', 'factory', Arguments['fact1', ['$dependency1', '$dependency2', function(){}],
    ['$provide', 'service', Arguments['serv1', ['$dependency3', '$dependency4', function(){}],
    ['$provide', 'controller', Arguments['ctrl1', ['$dependency2', '$dependency3', function(){}],
    ['$provide', 'factory', Arguments['fact2', ['$dependency1', '$dependency4', function(){}]
    ...
]

所以你可以搜索一下mod._invokeQueue对于它包含的每个提供者。

但这仅包含该特定模块的提供程序列表。如果您想获取所有依赖模块的列表,则需要循环遍历mod.requires array.

如果模块具有模块级依赖关系,如下所示:

var mod = angular.module('myModule', ['otherModule1','otherModule2']);

然后mod对象也会有一个mod.requires包含这些模块依赖项名称的数组,如下所示:

angular.forEach(mod.requires, function(requiredModuleName){
    // first get a reference to the required module by calling angular.module()
    var requiredMod = angular.module(requiredModuleName);
    // requiredMod will have its own ._invokeQueue
    // requiredMod._invokeQueue will look like the _invokeQueue from above
    ...
    // do something with the additional providers in _invokeQueue
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS - 获取所有注册服务的列表? 的相关文章

随机推荐

  • 如何解决“迭代器应该返回字符串,而不是字节”

    我正在尝试导入 CSV 文件 使用表单从客户端系统上传文件 获得文件后 我将提取其中的一部分并在我的应用程序中填充模型 但是 当我去迭代上传文件中的行时 出现 迭代器应该返回字符串 而不是字节 错误 我花了几个小时尝试不同的事情并阅读了我能
  • CSS 转换仅在 Chrome 开发工具打开时有效

    我遇到了 CSS 转换的奇怪异常 加载时完全忽略转换 但是如果我打开 Chrome 开发工具并导航 DOM 树 popup gt div gt img并选择它 然后单击主图像 过渡就会起作用 并且即使开发工具关闭也仍然如此 我怀疑我犯了一些
  • 所有输入字段通过 jQuery 代码上的单行/最少行进行验证

    我有一个表单 其中有 30 个输入框 10 个文本区域和 3 个选择框 updated 字段且全部为必填字段 如何通过 jQuery javascript 对所有输入字段应用验证can t be blank empty NULL 我不想每次
  • 如何编写单元测试的输出?

    我的单元测试中的任何调用Debug Write line or Console Write Line 调试时只是被跳过 并且输出永远不会打印 从我正在使用的类中调用这些函数工作正常 我知道单元测试应该是自动化的 但我仍然希望能够从单元测试中
  • 当不使用带有奇怪访问器的注释时加载 mongodb 哈希关联数组映射的正确方法[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我这样做是为了映射文档的非注释映射 但它还没有赶上 我知道这是旧代码 但有人知道如何正确映射它 谢谢 相关公关 https git
  • 尽管发送了“升级”标头,但浏览器不会升级到 h2 (HTTP/2)

    我正在尝试让 h2 HTTP 2 在我的网络服务器上工作 通过 ondrej 存储库安装了 Apache 2 4 20 我在 Debian 8 和 Ubuntu 14 04 服务器上进行了测试 但我不断遇到同样的问题 我正在运行 OpenS
  • Micronaut 使用 HttpClient 读取超时

    我正在努力使用Micronaut HTTP客户端对于多次调用第三方 REST 服务而未收到io micronaut http client exceptions ReadTimeoutException 要消除第三方依赖性 可以使用调用其自
  • 前 3 名得分 - MySQL [重复]

    这个问题在这里已经有答案了 我正在建立一个 前 3 名 排行榜 我想显示前 3 个分数 绘制每个人的最大值 但我不想限制 3 个 因为我想显示具有前 3 个分数的任何人 例如 使用下面的数据 Name Score Matt 17 Mark
  • 通过 Facebook Graph API 提取照片

    我正在尝试提取当前登录个人资料的标记照片 获得了会话 ID 但它似乎是一个空数组 img src 我知道这段代码可能真的很糟糕 我是 PHP 新手 只是尝试了一些东西 如可用文档所述here http develo
  • 如何一次杀死 Unix 中的所有 shell?

    随着时间的推移 我的 Mac 变得越来越慢 原因是我的贝壳数量巨大 例如 Bashes 和 Fishes 每个shell都有不同的PID 一颗颗杀炮弹太麻烦了 怎样才能一次性杀死他们呢 The killall https ss64 com
  • 如何知道我单击了哪个元素来触发模糊事件处理程序? [复制]

    这个问题在这里已经有答案了 非常简单 我有一个模糊 事件处理程序来触发一个函数 我希望当单击某个元素触发模糊时该函数不会触发 我尝试了 document activeElement 但我得到的是 HTMLBodyElement 而不是我单击
  • 从 R 中的数据表中提取唯一行[重复]

    这个问题在这里已经有答案了 我正在从数据框和矩阵迁移到数据表 但尚未找到从数据表中提取唯一行的解决方案 我想我遗漏了一些东西 J 符号 尽管我还没有在常见问题解答和简介小插图中找到答案 如何提取唯一的行 而不转换回数据框 这是一个例子 li
  • 为什么“autoreconf”不经常使用?

    我是新手自动工具 https en wikipedia org wiki GNU Autotools 根据我的理解 使用 Autotools 构建软件需要遵循以下基本步骤 autoreconf install configure make
  • 移动应用的同源政策

    我一直在研究这个问题 但找不到令我满意的答案 我非常清楚同源策略适用于标准网络浏览器中的网站 当我开始开发一个使用本机 webview 并使用 jQuery 加载网站内容的移动应用程序时 我的问题出现了 load方法 通常在标准 Web 浏
  • 如何在调试模式下将命令行参数从 VS 传递给 Python?

    我正在使用 Visual Studio 的 Python 工具 注意 不是 IronPython 我需要使用从命令行传递给模块的参数 我了解如何通过在代码窗口中右键单击并选择 从调试开始 来在调试中启动模块 但这种方法永远不会提示我输入命令
  • 当搜索输入字段被清除时,如何从搜索过滤器中隐藏列表项目?

    我有一个像这样的 HTML 列表项 ul li a href Mango a li li a href Apple a li li a href Grape a li li a href Cherry a li ul 用户将看不到这些项目
  • 为什么动态添加 script 元素时 document.currentScript 没有属性?

    我有一个脚本如下 当脚本是index html 的一部分时 长度属性值为1 属性数量 的NamedNodeMap 对象将记录到控制台 如果该脚本是通过另一个脚本动态添加的 则长度属性值为 0 的 NamedNodeMap 对象将记录到控制台
  • 在对象类型 ng 模型值上使用 $formatter ,角度 1.2 有效,但版本 1.3 无效

    该代码适用于 Angular 1 2 26 但不适用于 Angular 1 3 0 rc5 或我尝试过的任何 1 3 x 版本 我发现这个问题https github com angular angular js issues 9218 h
  • 子序列的数量奇怪吗?

    我有一个像这样创建的序列对象 subsequences lt function data slmax lt max data time sequences seqe lt seqecreate data sequences sts lt s
  • AngularJS - 获取所有注册服务的列表?

    我可以获得所有已注册指令 服务 控制器等的列表吗 在运行时 您可以获得每个模块的提供者列表 即服务 指令 控制器 工厂 等 尽管该列表有点神秘 假设您有以下内容 var mod angular module myModule mod fac