首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS -模块().provider() vs $provide.provider()

AngularJS -模块().provider() vs $provide.provider()
EN

Stack Overflow用户
提问于 2014-02-07 17:32:24
回答 1查看 613关注 0票数 0

注意:我并不是在寻找价值、工厂、服务和提供者‘食谱’,https://stackoverflow.com/questions/15666048/angular-js-service-vs-provider-vs-factory之间的区别

我在寻找关于定义它们的不同方法的澄清:如果我错了,请纠正我,但似乎

代码语言:javascript
复制
myApp = angular.module('myApp', [])
    .value(...)
    .factory(...)
    .service(...)
    .provider(...)

映射到

代码语言:javascript
复制
$provide.value()
$provide.factory()
$provide.service()
$provide.provider()

你可以用任何一种方法。我问了这个问题,并意识到我可以使用$provide作为module().config()的依赖项。我的问题:

  1. 什么时候/为什么我要使用angular.module().provider()与使用$provide依赖项?
  2. 定义后是否有任何方式(或理由)访问/更改提供程序?
  3. 使用用于Chrome的AngularJS Batarang,我将查看各种角度的$scope属性,而不会看到$provide$injector。这些人住在哪里?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 19:08:37

  1. 模块定义之外的提供程序方法只是捷径。尽可能频繁地使用它们,因为它会使代码更短、更容易阅读和理解。与注入$provider服务并直接调用相比,所涉及的仪式/仪式更少。直接使用$provide的主要原因是访问一个不是模块(例如装饰器)的捷径的方法,或者如果您必须从一个服务或组件中执行一些在模块定义级别上没有启动的操作。
  2. 在提供者定义后更改它的常见情况是,当您正在集成第三方组件并希望添加或更改该行为时。第三方模块将定义服务,然后以特定于应用程序的方式介入并覆盖或扩展它。例如,一个常见的情况是采用内置的角异常处理程序,并将其扩展到与您自己的组件进行接口。
  3. $scope是一种特殊的“胶水”,用于数据绑定,并且只公开您在$scope上显式设置的属性/函数。所有其他杂项模块/服务都存储在角的依赖注入容器中。第一件事情是创建一个$injector实例来跟踪依赖关系。因此$injector === $injector.get('$injector')。$provide也是如此。以$作为前缀的任何东西都是按照约定的,这是一种在$injector中放置角的服务,供您使用。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21634190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档