我发现网上有很多答案,这里有堆栈溢出。但是,没有人澄清在哪种场景中使用哪一个,因为所有三个都可以执行相同的功能集?
请澄清。
答案 0 :(得分:1)
提供商是可配置的服务。如果您使用Foo
创建provider()
服务,则可以在FooProvider
块中使用config()
:
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
实例化。 E.g:
// Javascript "class"
function Foo() {
...
}
Foo.prototype.bar = ...;
angular.module('MyApp', [])
.service('Foo', Foo)
.factory('Bar', function () {
...
})
.run(function (Foo, Bar) {
...
});