注意:我不是在寻找价值,工厂,服务和提供商'食谱'之间的差异,as explained here.
我正在寻找有关定义它们的不同方法的说明:如果我错了,请纠正我,但看起来好像
myApp = angular.module('myApp', [])
.value(...)
.factory(...)
.service(...)
.provider(...)
映射到
$provide.value()
$provide.factory()
$provide.service()
$provide.provider()
你可以使用任何一种方式。我问this question,并意识到我可以使用$provide
作为module().config()
的依赖项。我的问题:
$provide
依赖?$scope
属性,但看不到$provide
或$injector
。这些住在哪里?答案 0 :(得分:1)
模块定义的提供者方法只是捷径。您可以随意使用它们,因为它可以缩短,更易于阅读和理解代码。与注入$ provider服务并直接调用相比,更少涉及仪式/仪式。直接使用$ provide的主要原因是访问一个不是模块的快捷方法(例如装饰器),或者你必须在服务或组件中做一些不在模块定义中的东西水平。
在定义之后更改提供程序的常见情况是,当您要集成第三方组件并想要添加或更改行为时。第三方模块将定义服务,然后您以某种特定于您的应用的方式介入并覆盖或扩展它。例如,常见的情况是采用内置的Angular异常处理程序并将其扩展为与您自己的组件接口。
$ scope是用于数据绑定的特殊“粘合剂”,仅公开您在$ scope上显式设置的属性/函数。所有其他杂项模块/服务都存储在Angular的依赖注入容器中。 Angular做的第一件事就是创建一个$ injector实例来跟踪依赖关系。因此$ injector === $ injector.get('$ injector')。与$ provide相同。任何以$为前缀的东西都是按照惯例,Angular在$ injector中放置的服务供您使用。