Улучшить эту документацию Посмотреть исходный код $provide
- сервис в модуле auto
Сервис $provide имеет ряд методов для регистрации компонентов в $injector. Многие из этих функций также доступны в angular.Module.
Узел Angular — это объект-синглтон, созданный фабрикой сервиса. Эти фабрики сервисов, в свою очередь, создаются провайдерами сервисов. Провайдеры сервисов — это функции-конструкторы. При создании они должны содержать свойство $get, которое хранит функцию фабрики сервиса.
При запросе сервиса $injector отвечает за поиск соответствующего провайдера сервиса, его создание и вызов функции фабрики сервиса, чтобы получить экземпляр сервиса.
Часто сервисы не имеют параметров конфигурации, и нет необходимости добавлять методы в провайдер сервиса. Провайдер будет не более чем функцией-конструктором со свойством $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является функцией-конструктором, которая будет использована для создания экземпляра сервиса.Используйте $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, её можно ввести в функцию конфигурации модуля (см.
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.3.20/docs/api/auto/service/$provide