当前位置: 首页 > 面试题库 >

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

柯镜
2023-03-14
问题内容

我可以 在运行时 获取所有已注册指令,服务,控制器等的列表。。。?


问题答案:

您可以获取每个模块的提供者列表(即服务/指令/控制器/工厂/等),尽管该列表是一种含糊不清的形式。

说您有以下几点:

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数组。

如果模块具有模块级别的依赖性,则如下所示:

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
});

希望有帮助。



 类似资料:
  • 问题内容: 我可以在运行时获取所有已注册模块的列表吗? 例如: 问题答案: Angular没有提供一种检索已注册模块列表的方法(至少我无法在源代码中找到一种方法)。但是,您可以修饰将名称存储在数组中的方法。像这样: 现在您可以检查数组。 演示:http://plnkr.co/edit/bNUP39cbFqNLbXyRqMex?p = preview

  • 我们是否可以通过python客户端获得在Eureka服务器中注册的服务名称和IP? 我查看了python eureka客户端教程页面,但找不到与此相关的任何内容!

  • 我有一个ASP。NET核心2.1站点,注册了几个DbContext和一些条件连接字符串。 出于调试目的,我想列出所有注册的<code>DbContext</code>及其连接字符串,以确保所有内容都配置良好。 这只是一个“测试”功能,不用于任何其他用途,因此请不要回答“您不应该这样做”、“它是反模式”等。

  • 在进行服务拆分之后,服务的数量会变得非常多,而每个服务又可能会有非常多的集群节点来提供服务,那么为保障系统的正常运行,必然需要有一个中心化的组件完成对各个服务的整合,即将分散于各处的服务进行汇总,汇总的信息可以是提供服务的组件名称、地址、数量等,每个组件拥有一个监听设备,当本组件内的某个服务的状态变化时报告至中心化的组件进行状态的更新。服务的调用方在请求某项服务时首先到中心化组件获取可提供该项服务

  • 我正在使用Azure服务总线队列。但是我不能使用“获取所有队列消息(peek Lock):微软内置于api”从队列中获取所有消息。 有没有办法获取所有队列消息? {"$连接":{"值":{"servicebus_1":{"连接ID":"/订阅/c776fex3-6aec-4722-b099-b054c267b240/资源组/Plugin-Resources/提供者/Microsoft.网络/连接/

  • Spring Boot版本:2.1.6.发行版 Spring Cloud版本:greenwich.sr1 目的是在一个集群中建立两个Eureka服务器实例,并将所有微服务注册到这两个服务器上,以实现HA。目前,我正在运行Ubuntu18.04的本地机器上测试这一点。 因此,正如在官方文档中提到的,我已经建立了对Eureka实例的点对点意识。在打开这两个Eureka服务器实例时,在Instance-