Улучшить эту документацию Просмотреть исходный код $provide
- сервис в модуле auto
Сервис $provide предоставляет множество методов для регистрации компонентов в $injector. Многие из этих функций также доступны в angular.Module.
Узел Angular сервис — это одиночный объект, созданный фабрикой сервиса. Эти фабрики сервисов — это функции, которые, в свою очередь, создаются поставщиком сервиса. Поставщики сервиса — это функции-конструкторы. При создании они должны содержать свойство $get, которое хранит функцию фабрики сервиса.
Когда вы запрашиваете сервис, $injector отвечает за поиск правильного поставщика сервиса, создание его экземпляра и затем вызов функции фабрики сервиса $get для получения экземпляра сервиса.
Часто сервисы не имеют опций конфигурации, и нет необходимости добавлять методы к поставщику сервиса. Поставщик будет не более чем функцией-конструктором со свойством $get. В таких случаях сервис $provide имеет дополнительные вспомогательные методы для регистрации сервисов без указания поставщика.
- provider(provider) - регистрирует поставщика сервиса в $injector
- constant(obj) - регистрирует значение/объект, к которому могут получить доступ поставщики и сервисы.
- value(obj) - регистрирует значение/объект, к которому могут получить доступ только сервисы, а не поставщики.
-
factory(fn) - регистрирует функцию фабрики сервиса,
fn, которая будет обернута в объект поставщика сервиса, чье свойство$getбудет содержать данную функцию фабрики. -
service(class) - регистрирует функцию-конструктор,
classкоторая будет обернута в объект поставщика сервиса, чье свойство$getсоздаст новый объект, используя данную функцию-конструктор.
См. отдельные методы для получения дополнительной информации и примеров.
Методы
-
provider(name, provider);
Регистрирует функцию поставщика в $injector. Функции поставщика — это функции-конструкторы, экземпляры которых отвечают за «предоставление» фабрики для сервиса.
Имена поставщиков сервисов начинаются с имени предоставляемого сервиса, за которым следует
Provider. Например, у сервиса $log есть поставщик, называемый $logProvider.Объекты поставщиков сервисов могут иметь дополнительные методы, которые позволяют настроить поставщика и его сервис. Важно, что вы можете настроить тип создаваемого сервиса с помощью метода
$getили то, как этот сервис будет действовать. Например, у $logProvider есть метод debugEnabled, который позволяет указать, будет ли сервис $log выводить отладочные сообщения в консоль или нет.Параметры
Параметр Тип Описание name stringИмя экземпляра. ПРИМЕЧАНИЕ: поставщик будет доступен под ключом
name + 'Provider'.provider Objectfunction()Если поставщик:
-
Object: тогда он должен иметь метод$get. Метод$getбудет вызван с помощью $injector.invoke() при необходимости создания экземпляра. -
Constructor: будет создан новый экземпляр поставщика с использованием $injector.instantiate(), затем он будет обработан какobject.
Возвращаемое значение
Objectзарегистрированный экземпляр поставщика
-
-
factory(name, $getFn);
Регистрирует фабрику сервиса, которая будет вызвана для возврата экземпляра сервиса. Это сокращенная запись для регистрации сервиса, где его поставщик состоит только из свойства
$get, которое является заданной функцией фабрики сервиса. Используйте $provide.factory(getFn), если вам не нужно настраивать свой сервис в поставщике.Параметры
Параметр Тип Описание name stringИмя экземпляра.
$getFn function()Array.<(string|function())>Инжектируемая $getFn для создания экземпляра. Внутренне это сокращение для
$provide.provider(name, {$get: $getFn}).Возвращаемое значение
Objectзарегистрированный экземпляр поставщика
-
service(name, constructor);
Регистрирует конструктор сервиса, который будет вызван с
newдля создания экземпляра сервиса. Это сокращенная запись для регистрации сервиса, где свойство$getпоставщика — это функция фабрики, которая возвращает экземпляр, созданный инжектором из функции-конструктора сервиса.Внутренне это выглядит примерно так:
{ $get: function() { return $injector.instantiate(constructor); } }Используйте $provide.service(class), если вы определяете свой сервис как тип/класс.
Параметры
Параметр Тип Описание name stringИмя экземпляра.
constructor function()Array.<(string|function())>Инжектируемый класс (функция-конструктор), который будет создан.
Возвращаемое значение
Objectзарегистрированный экземпляр поставщика
-
value(name, value);
Регистрирует сервис со значением в $injector, например, строку, число, массив, объект или функцию. Это сокращение для регистрации сервиса, где свойство
$getпоставщика — это функция фабрики, которая не принимает аргументов и возвращает сервис со значением. Это также означает, что в сервис со значением нельзя инжектировать другие сервисы.Сервисы со значением похожи на константные сервисы, за исключением того, что их нельзя инжектировать в функцию конфигурации модуля (см.
angular.Module), но их можно переопределить с помощью декоратора Angular.Параметры
Параметр Тип Описание name stringИмя экземпляра.
value *Значение.
Возвращаемое значение
Objectзарегистрированный экземпляр поставщика
-
constant(name, value);
Регистрирует константный сервис в $injector, например, строку, число, массив, объект или функцию. Как и в случае с сервисом value, другие сервисы в константу инжектировать нельзя.
Но в отличие от сервиса value, константу можно инжектировать в функцию конфигурации модуля (см.
angular.Module), и ее нельзя переопределить с помощью декоратора Angular.Параметры
Параметр Тип Описание name stringИмя константы.
value *Значение константы.
Возвращаемое значение
Objectзарегистрированный экземпляр
-
decorator(name, decorator);
Регистрирует декоратор сервиса в $injector. Декоратор сервиса перехватывает создание сервиса, позволяя ему переопределить или изменить поведение сервиса. Объект, возвращаемый декоратором, может быть исходным сервисом или новым объектом сервиса, который заменяет или оборачивает и делегирует исходному сервису.
Параметры
Параметр Тип Описание name stringИмя сервиса, который нужно декорировать.
decorator function()Array.<(string|function())>Эта функция будет вызвана при необходимости создания экземпляра сервиса и должна вернуть декорированный экземпляр сервиса. Функция вызывается с помощью метода injector.invoke и поэтому полностью инжектируема. Локальные аргументы инъекции:
-
$delegate- Исходный экземпляр сервиса, который можно подменить, настроить, декорировать или делегировать.
-
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.4.14/docs/api/auto/service/$provide