Angular Js:工厂、服务和提供商.何时使用哪个
Angular Js: Factory, Service and Providers. When to use which?
我发现网上有很多答案,这里有很多答案在堆栈溢出。但是,没有人澄清在哪种情况下使用哪一个,因为所有三个都可以执行相同的功能集?
请澄清。
提供程序是一种可配置的服务。如果使用 provider()
创建 Foo
服务,则可以在config()
块中使用FooProvider
:
angular.module('MyApp', [])
.provider('Foo', function () {
...
})
.config(function (FooProvider) {
FooProvider.something('bar');
})
.run(function (Foo) {
...
});
有关您可能希望将其用于什么目的的简单示例,请参阅 $logProvider
。
如果不需要服务的可配置...Provider
,则factory()
或service()
方法可以更轻松地创建服务,因为不需要执行复杂的提供程序设置。 factory
/service
只是您不需要提供程序的简写便利构造函数。
factory
和 service
之间的区别在于,factory
接受典型的回调函数,而service
期望一个"类",它将用new
来实例化。 例如:
// Javascript "class"
function Foo() {
...
}
Foo.prototype.bar = ...;
angular.module('MyApp', [])
.service('Foo', Foo)
.factory('Bar', function () {
...
})
.run(function (Foo, Bar) {
...
});
有关如何编写提供程序或无提供程序服务的更多详细信息,请参阅 $provide
和指南。
相关文章:
- AWS Cognito:通过 google 获取“请提供有效的公共提供商”
- 角度模态服务未知提供商
- 选择下拉列表需要在选中时显示提供商的详细信息-无法通过我的脚本显示url
- 从服务提供商 IP 地址获取设备 IP 地址
- JsFiddle:未知提供商:$intervalProvider <- $interval
- 工厂和控制器,未知提供商
- 未知提供商:$resourceProvider - AngularJS
- 未知提供商:捆绑后$resourceProvider
- ES2015 单例或服务提供商或模块,用于敲除.js组件
- $http提供商向 Github API 发出外部请求,但不向 Google 地图 API 发出请求
- Angular Js:工厂、服务和提供商.何时使用哪个
- AngularJS + RequireJS.未知提供商:$routeProvider
- 为什么我必须添加尾部'提供商'到服务名称,当我使用es6时
- Chrome中阻止的视频-运行视频提供商的不安全内容
- 如何在AngularJs中设置来自其提供商的服务的依赖关系
- 单个<提供商>用于许多组件
- 从PhoneGap JavaScript访问Android上的内容提供商
- 未知提供商AngularJs在添加“时”;.运行”;
- AngularJS提供商和模型
- Angular未知提供商错误