Улучшить эту документацию Просмотреть исходный код $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()Функция $getFn для создания экземпляра. Внутренне это сокращение для
$provide.provider(name, {$get: $getFn}).Возвращаемое значение
Objectзарегистрированный экземпляр провайдера
-
service(name, constructor);
Регистрация конструктора сервиса, который будет вызван с
newдля создания экземпляра сервиса. Это сокращенная запись регистрации сервиса, где свойство провайдера$getявляется функцией-конструктором сервиса, которая будет использоваться для создания экземпляра сервиса.Вам следует использовать $provide.service(class), если вы определяете свой сервис как тип/класс.
Параметры
Параметр Тип Описание name stringИмя экземпляра.
constructor FunctionКласс (функция-конструктор), который будет создан.
Возвращаемое значение
Objectзарегистрированный экземпляр провайдера
-
value(name, value);
Регистрация сервиса-значения в $injector, например, строка, число, массив, объект или функция. Это сокращенная запись регистрации сервиса, где свойство провайдера
$getявляется функцией-фабрикой, которая не принимает аргументов и возвращает сервис-значение.Сервисы-значения похожи на сервисы-константы, за исключением того, что их нельзя ввести в функцию конфигурации модуля (см.
angular.Module), но их можно переопределить с помощью декоратора Angular decorator.Параметры
Параметр Тип Описание name stringИмя экземпляра.
value *Значение.
Возвращаемое значение
Objectзарегистрированный экземпляр провайдера
-
constant(name, value);
Регистрация константы сервиса, например, строка, число, массив, объект или функция, в $injector. В отличие от value, она может быть передана в функцию конфигурации модуля (см.
angular.Module) и не может быть переопределена декоратором Angular decorator.Параметры
Параметр Тип Описание name stringИмя константы.
value *Значение константы.
Возвращаемое значение
Objectзарегистрированный экземпляр
-
decorator(name, decorator);
Регистрация декоратора сервиса в $injector. Декоратор сервиса перехватывает создание сервиса, позволяя переопределить или изменить его поведение. Объект, возвращаемый декоратором, может быть оригинальным сервисом или новым объектом сервиса, который заменяет или оборачивает и делегирует оригинальному сервису.
Параметры
Параметр Тип Описание name stringИмя сервиса для декорации.
decorator function()Эта функция будет вызвана при необходимости создания сервиса и должна вернуть экземпляр декорированного сервиса. Функция вызывается с помощью метода injector.invoke и, следовательно, полностью инжектируема. Местные аргументы ввода:
-
$delegate- оригинальный экземпляр сервиса, который может быть изменен, настроен, декорирован или делегирован.
-
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.2.32/docs/api/auto/service/$provide