Spec-Zone.ru › Angular.js 1.2

Улучшить эту документацию Просмотреть исходный код $provide

  1. сервис в модуле 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API