Angular Js:工厂,服务和供应商。什么时候用哪个?

时间:2016-01-29 09:18:39

标签: javascript angularjs factory angular-services angular-providers

我发现网上有很多答案,这里有堆栈溢出。但是,没有人澄清在哪种场景中使用哪一个,因为所有三个都可以执行相同的功能集?

请澄清。

1 个答案:

答案 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只是速记便利构建者。

factoryservice之间的区别在于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) {
        ...
    });

有关如何编写提供商或无提供商服务的更多细节,请参阅$providethe guide