-4

Я нашел, что есть много ответов онлайн и здесь, в переполнении стека. Но никто не поясняет, какой из них использовать, в каком сценарии, поскольку все три могут выполнять один и тот же набор функций?Угловые Js: завод, сервис и поставщики. Когда использовать какой?

Просьба уточнить.

+6

Возможный дубликат [AngularJS: Сервис против поставщика и завода] (http://stackoverflow.com/questions/15666048/angularjs-service-vs-provider-vs-factory) – Ankh

+0

Также см. Это в официальных документах: https://docs.angularjs.org/guide/providers – Anticom

ответ

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. Например .:

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

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

Для более специфических о том, как написать поставщика или поставщика меньше обслуживания, см $provide и the guide.