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 :
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(); } });
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); } } });