-4

我發現在網上有很多答案,在這裏堆棧溢出。但是,沒有一個澄清在哪種情況下使用哪一種,因爲所有三種都可以執行相同的功能?角Js:工廠,服務和提供商。何時使用哪個?

請說明。

+6

可能重複的[AngularJS:服務vs提供者vs工廠](http://stackoverflow.com/questions/15666048/angularjs-service-vs-provider-vs-factory) – Ankh

+0

另請參見官方文檔中的這一個: https://docs.angularjs.org/guide/providers – Anticom

回答

1

供應商是一種可配置的服務。如果您創建一個Foo服務與provider(),您可以在config()塊使用FooProvider

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實例。例如: -

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

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

有關如何編寫一個供應商或供應商少服務的更多細節,請參見$providethe guide