Models
Les Models correspondent aux classes métier de l'application.
Avec Ember, le chargement des models dans une application peut être découplé du chargement technique des données (interrogation d'un service web par ex) grâce au Store et aux Adapters.
Création de Models
ember generate model person
Ce qui génère le Model suivant :
import DS from 'ember-data'; export default DS.Model.extend({ });
Ajout d'attributs
Ajout d'attribut avec la méthode DS.attr :
import DS from 'ember-data'; export default DS.Model.extend({ firstName: DS.attr(), lastName: DS.attr(), birthday: DS.attr() });
Un model peut aussi définir des computed properties :
import DS from 'ember-data'; import { computed } from '@ember/object'; export default DS.Model.extend({ firstName: DS.attr(), lastName: DS.attr(), fullName: computed('firstName', 'lastName', function() { return `${this.get('firstName')} ${this.get('lastName')}`; }) });
Transforms : dataTypes
La méthode DS.attr peut définir le type de données en passant en paramètre un transformer :
import DS from 'ember-data'; export default DS.Model.extend({ name: DS.attr('string'), age: DS.attr('number'), admin: DS.attr('boolean'), birthday: DS.attr('date') });
- date transforme une chaîne au format ISO en un objet javascript Date
- boolean convertit une chaîne en booléen False ou True
Il est également possible de définir ses propres transformers : voir Custom transforms
Default value
import DS from 'ember-data'; export default DS.Model.extend({ username: DS.attr('string'), email: DS.attr('string'), verified: DS.attr('boolean', { defaultValue: false }), createdAt: DS.attr('date', { defaultValue() { return new Date(); } }) });