为什么主模块的服务可以在其他模块中使用?

2023-11-22

我有一个主模块main其中包含一个服务mainService。然后我注入了另一个模块moduleA在我的主模块中。我随机打电话mainService in moduleA无需注射main模块并惊讶地发现它工作正常。

angular.module('main', ['moduleA']);
angular.module('main').service('mainService', function(){
   //insert code here
});

angular.module('moduleA', []);
angular.module('moduleA').controller('abc', function(mainService){
   //mainService available here, without injecting main module
});

我想知道这背后的原因。我曾经在评论中读到,模块中定义的服务在应用程序中的任何地方都可用,但找不到来源。这样继续使用可以吗?

我在用着AngularJS ver 1.3.15如果有帮助的话。


是的,由于父子关系,您可以使用 main 的服务。 “main”是父模块,“moduleA”是其子/依赖模块。

“main”模块中定义的任何服务、控制器、指令都可用于“moduleS”

让我们用一个更复杂的场景来理解这个概念

angular.module('main', ['moduleA', 'moduleB']);


angular.module('moduleA', []);
angular.module('moduleA').service('moduleAService', function(){
   //insert code here
});

angular.module('moduleB', []);
angular.module('moduleB').controller('abc', function(moduleAService){
   //moduleAService available here, without injecting moduleA module
});

现在在这种情况下 moduleS 和 moduleS 是完全独立的,但 module 仍然可以访问 moduleS 服务

这是因为 main 模块依赖于 moduleA 和 moduleB。因此 moduleA 服务被注入到主模块中,而 moduleB 作为“主”模块的子模块可以访问它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么主模块的服务可以在其他模块中使用? 的相关文章

  • 使用spring自动装配时如何传递构造函数参数?

    我们的项目使用 spring DI IoC 所以我使用自动装配来注入 beans 程序在实例化期间需要将参数传递给对象 并且参数是在运行时 而不是在编译时 知道的 如何在使用自动装配时实现这一点 示例代码如下 界面 IMessage pac
  • 如何在 angular-ui 中动态禁用 ui-sortable 指令

    我正在使用 Angular ui 使用 ui sortable 指令进行排序 是否可以根据范围状态动态启用 禁用可排序功能 因此 我需要一个按钮来更改范围属性的状态 并且根据此属性可排序是否应该工作 角度指令支持观察可排序选项何时发生变化
  • 错误:[$rootScope:infdig] 过滤器中发生了 10 次 $digest() 迭代

    我已尝试了有关此问题的所有答案 但找不到消除此错误的方法 我非常确定这个过滤器函数是导致上述错误的原因 filter collect ingredients function return function input if angular
  • 如何在 AngularJS 中从 ng-include 切换控制器值?

    我正在使用 AngularJS 我有一个header html我已经使用 ng include 将该 html 页面合并到另一个 html 中 另外 我有一个下拉列表header html我希望显示所选值 从下拉列表中 列表 我怎样才能做到
  • 为什么 angularjs bootstrap datepicker 选择前一天?

    我在用着AngularJS引导日期选择器指令 http angular ui github io bootstrap 当我从模型中设置日期时 它会选择所选日期之前的一天
  • AngularJS 仅在解析时返回两个 http get 请求

    我有一个 Angular 应用程序 在控制器中我需要调用一个发出两个 http get 请求的函数 并且我需要这个函数在解析这些值时返回这些值 我无法在 routeProvider 中解析它们 因为此函数需要在同一控制器中获取值 我展示了控
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • 如何使用 Angularjs 检查模块中的指令或控制器是否可用

    在 angularjs 中 给定一个模块 如何检查给定一个模块是否存在指令 控制器 我有一个模块 我想知道是否已加载某些特定指令 下面是一些示例代码 var module angular module myModule check if c
  • 禁用在 django Rest Framework 中创建嵌套对象

    Hi 你能帮我怎么做吗禁用创建嵌套对象 我有这样的序列化器 员工拥有团队的外键 class TeamSerializer serializers ModelSerializer class Meta model Team fields id
  • 如何在 AngularJS SPA 应用程序中处理浏览器刷新?

    我的 AngularJS 应用程序使用 用户界面路由器 一个index html 文件 所有登录和数据调用都会发送到一个 ASP NET Web 控制器 其 URL 以 api xxx 开头 当用户输入 myapp com 时 服务器ind
  • Angular 中有主控制器好吗?

    我不知道这是否是一个好的做法 我在路由配置中定义了一个控制器 但是因为我的HomeCtrl is in ng if他听不到的声明loginSuccess所以我做了MainCtrl它监听loginSuccess并做出适当的反应 这段代码工作得
  • 如何发布数组多维角度js

    我在 angularjs 中有一个数组 示例如下 scope order qty 20 scope order adress Bekasi scope order city Bekasi 这个数组可以用这个代码发布 http method
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • Ninject Providers -> 在提供程序中获取另一个依赖项

    我想知道这里的最佳实践是什么 我需要为我的多租户应用程序构建一个 DbContext 因此我创建了一个如下所示的依赖项提供程序 public class TenantContextFactoryProvider Provider
  • angularjs:timeout 在 $http POST 请求中不起作用

    我的代码中有以下代码片段 它为请求设置了以毫秒为单位的超时 但即使满足超时 它也不会取消 var httpURL method URLobj method url urlString data data withCredentials tr
  • AngularJS:初始化指令内的隔离范围

    我创建了一个指令 它接受一些属性并使用这些属性初始化隔离范围 如果未指定属性 则应使用计算值初始化隔离范围 我添加了一个链接函数 用于检查范围并初始化默认值 如果未使用属性设置值 范围已初始化 但如果我设置默认值 那么它稍后会被框架覆盖 一
  • Angular.js,如何将值从一个组件传递到任何其他组件

    我从 Angular js 开始 所以如果我解释得不够 我会将其添加到问题中 请告诉我 I have A component js A template html B component js B template html A compo
  • jTidy 漂亮的打印自定义 HTML 标签

    我正在尝试使用 JTidy 来漂亮地打印用户生成的格式良好的 HTML div class component holder ng binding ng scope ui draggable ui draggable handle div
  • AngularJS - 从数据中删除 \n

    捕获和格式化从服务器传递的文本内部以显示换行符的最佳方法是什么 小提琴在这里 http jsfiddle net nicktest2222 2vYBn http jsfiddle net nicktest2222 2vYBn scope d
  • AngularJS 使用 $apply 而不使用 $scope

    我开始使用 AngularJS 并且接受了用它来编写控制器的约定 而不是用 scope 所以我的控制器看起来像这样 myApp controller SomeController function this myModel id 1 nam

随机推荐

  • 更新到构建工具 2.3.0 后,LibraryPlugin 中没有 sdkHandler 字段

    我正在使用此方法来获取 NDK 目录 project plugins findPlugin com android library sdkHandler getNdkFolder 更新后com android tools build gra
  • 在 iframe 中包含 jQuery 时,Internet Explorer 9(不是早期版本或其他浏览器)中出现错误

    基本上我有一个页面启动了 fancybox iframe 在该 iframe 中我还包含 jQuery 但是当我在 Internet Explorer 9 中测试它时 它给了我错误 行 68 n 错误 对象 未定义 该错误在文件中jquer
  • Python 和 Matlab 中的克罗内克积

    我试图从 MATLAB 中用 Python 重现结果 但是 我似乎无法正确理解 这是正确的 MATLAB 代码 nx 5 ny 7 x linspace 0 1 nx dx x 2 x 1 y linspace 0 1 ny dy y 2
  • Python:在 Windows 上启动新的命令提示符并等待其完成/退出

    我不明白为什么在 Windows 上做到这一点这么难 我想生成一堆命令提示符窗口来运行其他脚本 我想要这个的原因是这样我可以整齐地看到每个脚本的所有输出 如果我将它们只是主窗口中的线程 子进程 我无法正确查看所有输出 我也不想记录输出 因为
  • C# 拖放在 Windows 7 上不起作用

    我有一个使用 C winforms 的项目已经有一段时间了 我在windows 7发布之前就实现了拖放功能 工作起来就像一个魅力 但是 当使用 Windows 7 时 它不起作用 该事件甚至没有被触发 AllowDrop设置为 true 订
  • 无法在 Kafka Stream 应用程序的 IDE 中删除状态目录

    我正在开发一个简单的 Kafka Stream 应用程序 它从一个主题中提取消息并在转换后将其放入另一个主题中 我正在使用 Intelij 进行开发 当我调试 运行这个应用程序时 如果我的 IDE 和 Kafka 服务器位于同一台机器 即
  • 使用 JavaScript 自定义确认对话框

    我想创建一个类似于的 JavaScript 函数confirm 显示一个对话框 一个带有问题和 2 个按钮的 div 并返回true如果用户单击 确定 或false否则 是否可以使用 JavaScript jQuery 做到这一点 但是wi
  • 对绑定在一起的 NSTextField 使用 KVO

    我在使用 KVO 处理 Cocoa 应用程序中绑定在一起的文本字段时遇到问题 当使用按钮在 NSTextFields 中设置字符串时 我已经得到了这个工作 但它不适用于绑定 一如既往 我们将非常感谢 Stack Overflow 提供的任何
  • 以编程方式忽略 Cout

    有谁知道是否有一个技巧可以切换所有cout lt lt 函数不打印可见输出 我正在尝试将我和其他人编写的一些代码组合在一起以制作一个演示 我不想将输出重定向到文件 并且想要一个在 Windows 和 Linux 之间具有一定兼容性的解决方案
  • Node.js / Express 应用程序中的测试环境

    我刚刚开始使用 Node 并且一直在关注各种教程 我创建了一个 Express 应用程序 并设置了 Mongoose 和 Jasmine 我如何配置我的规格 以便我可以 创建模型 在每个规格后自动清理它们 使用不同的数据库来创建测试对象 例
  • Python 来自 Python:限制功能? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 安全 沙箱 我正在用 Python 构建一个企业 Web 系统 该系统允许上传脚本并在服务器端运行 鉴于我已经在使用 Python 进行开发 而且它是一种非常简单的语言 它似乎是一种编写
  • 如何在 Ruby on Rails 中使用映射表跟踪模型历史记录?

    dream 我想记录用户何时更改地址 这样 当下订单时 它将始终能够引用下订单时使用的用户地址 可能的图式 users id username email user addresses id label line 1 line 2 city
  • Agda 的 Haskell 推导机制

    我想知道 Agda 中是否有任何类似于 Haskell 的东西deriving Eq条款 那么我下面还有一个相关的问题 例如 假设我有一种玩具语言的类型 data Type Set where Nat Type Prp Type 然后我可以
  • 有没有办法覆盖 LINQtoSQL 生成的类中的空构造函数?

    如果我的数据库中有一个名为 Users 的表 则 LINQtoSQL 会生成一个名为 User 的类 该类具有已声明的空构造函数 如果我想重写此构造函数并向其中添加我自己的逻辑 最佳实践是什么 由 O R 设计器生成的默认构造函数调用一个名
  • 更新多行时强制转换 NULL 类型

    当我尝试同时更新多行时遇到问题 这是我使用的表和查询 为了更好的阅读而进行了简化 table CREATE TABLE foo pkid integer x integer y integer query UPDATE foo SET x
  • 实体框架代码第一个唯一列

    我正在使用 Entity Framework 4 3 并使用 Code Fist 我有课 public class User public int UserId get set public string UserName get set
  • 结构体中的 GLSL Sampler2D

    在GLSL中 当我尝试将带有sampler2D属性的统一结构传递给向前声明的函数时 似乎存在着色器的链接错误 如果我删除前向声明并将函数移至 main 之上 则代码将有效 这是非法代码吗 version 330 core in vec2 t
  • “数组作为属性参数不符合 CLS”警告,但未给出类型信息

    编译我的解决方案时 我收到以下几个警告 警告 CS3016 作为属性参数的数组不符合 CLS 没有给出有关什么类型不合规的其他信息 在我的项目中 我有一些属性params构造函数中的数组参数 但它们都是内部的 这不应该影响 CLS 合规性
  • Visual Studio 2010的奇怪“警告LNK4042”

    我刚刚被 Visual Studio 2010 C 的一些重要警告狠狠地打了一顿 编译给出以下输出 1 Debug is obj 警告 LNK4042 多次指定对象 附加内容被忽略1 Debug make obj 警告 LNK4042 多次
  • 为什么主模块的服务可以在其他模块中使用?

    我有一个主模块main其中包含一个服务mainService 然后我注入了另一个模块moduleA在我的主模块中 我随机打电话mainService in moduleA无需注射main模块并惊讶地发现它工作正常 angular modul