-4

我发现网上有很多答案,这里在堆栈溢出中。但是,没有人明确说明在哪种情况下使用哪一个,因为这三个都可以执行相同的一组功能?

请说清楚。

4

1 回答 1

1

提供者是一种可配置的服务。如果您使用 来创建Foo服务provider(),则可以FooProviderconfig()块中使用 a:

angular.module('MyApp', [])
    .provider('Foo', function () {
        ...
    })
    .config(function (FooProvider) {
        FooProvider.something('bar');
    })
    .run(function (Foo) {
        ...
    });

有关您可能希望将其用于什么的简单示例,请参阅$logProvider

如果您不需要...Provider为您的服务配置可配置文件,则factory()orservice()方法可以更轻松地创建您的服务,因为您不需要进行复杂的提供程序设置。factory/service如果您不需要提供者,则只是简写的便利构造函数。

和之间的区别在于factoryservicefactory接受一个典型的回调函数,而service期望一个“类”,它将用new. 例如:

// Javascript "class"
function Foo() {
    ...
}
Foo.prototype.bar = ...;

angular.module('MyApp', [])
    .service('Foo', Foo)
    .factory('Bar', function () {
        ...
    })
    .run(function (Foo, Bar) {
        ...
    });

有关如何编写提供者或无提供者服务的更多细节,请$provide参阅指南

于 2016-01-29T09:27:28.860 回答