{Сервисы в AngularJS
Краткое введение
Сервис (service)
Сервис это один из фундаментальных типов данных в AngularJS, на ряду с контроллерами, директивами, фабриками;
Что такое сервис?
Как создать сервис?Чтобы создать сервис достаточно объявить его, используя метод «service» нашегоприложения.
Альтернативный синтаксисМожно использовать альтернативный синтаксис. Он также применим к другим типам данных в AngularJS, например, контроллерам.
Главное о сервисахОсновные моменты как работает сервис:
1. Все сервисы – синглтоны2. Сервис инициализируется лишь тогда, когда он в первые
внедряется в структурный элемент AngularJS, в качестве зависимости;
3. При вызове конструктора сервиса, конструктор должен вернуть объект (в отличие от фабрики, где можно вернуть что угодно).
Зачем нужны сервисы?Основные задачи сервиса:
1. Сервис используется в качестве модели. Эта модель доступна всем элементам приложения, потому что сервис — это синглтон;
2. Сервис может предоставлять API, для работы с конкретными задачами (например, с моделью в этом сервисе, или AJAX). Этот API можно внедрить и использовать в контроллерах;
3. Сервис может использоваться для связки («общения») контроллеров между собой;
Use case #1Вывод данных модели во вьюшке:
http://plnkr.co/edit/lFehxtraU4PDlbZNgcYK?p=preview
Use case #2Использование сервисов в качестве API:
http://plnkr.co/edit/8r7wZtGouOUTLDfKFiHC?p=preview
Фабрика (factory)
Главное о фабрикахОсновные моменты как работает фабрика:
1. Фабрика может вернуть любой тип данных (строку, число, объект, и другие);
2. Фабрика является синглтоном.
Важно: мемоизируется любое значение, которое возвращается при первой инициализации конструктора, и затем, при последующем внедрении фабрики в качестве зависимости внедряется уже мемоизированное значение, а не результат работы конструктора.
Когда нужны фабрики?Фабрики нужны в случаях, когда:
1. Нужно вернуть какое-то значение или конструктор, но не экземпляр какого-то класса. В остальных случаях можно создать сервис;
2. Если вам нужно получить обычную функцию.