我发现网上有很多答案,这里有很多答案在堆栈溢出。但是,没有人澄清在哪种情况下使用哪一个,因为所有三个都可以执行相同的功能集?
请澄清。
提供程序是一种可配置的服务。如果使用 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
和指南。