Services
Un service Ember (Ember.Service) est un objet dont la durée de vie est celle de l'application, et qui sera accessible depuis tous ses éléments.
Les services peuvent être utilisés pour toutes les opérations relatives à une application :
- User/session authentication.
- Geolocation.
- WebSockets.
- Server-sent events or notifications.
- Server-backed API calls that may not fit Ember Data.
- Third-party APIs.
- Logging.
Création
Avec ember-cli :
ember generate service shopping-cart
Un service hérite de la classe Ember.Service :
import Ember from 'ember'; export default Ember.Service.extend({ });
Comme les autres objets Ember, un service est initialisé (init) et peut avoir des propriétés et des méthodes. Ci-dessous, le service shopping cart permet de gérer un tableau d'items présents dans le pannier :
import Ember from 'ember'; export default Ember.Service.extend({ items: null, init() { this._super(...arguments); this.set('items', []); }, add(item) { this.get('items').pushObject(item); }, remove(item) { this.get('items').removeObject(item); }, empty() { this.get('items').clear(); } });
Accès à un service
L'accès à un service se fait par injection de dépendance.
import Ember from 'ember'; export default Ember.Component.extend({ //will load the service in file /app/services/shopping-cart.js shoppingCart: Ember.inject.service() });
import Ember from 'ember'; export default Ember.Component.extend({ //will load the service in file /app/services/shopping-cart.js cart: Ember.inject.service('shopping-cart') });
Utilisation du service injecté dans une action (accès par son getter) :
import Ember from 'ember'; export default Ember.Component.extend({ cart: Ember.inject.service('shopping-cart'), actions: { remove(item) { this.get('cart').remove(item); } } });