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.
ember generate model person
Ce qui génère le Model suivant :
import DS from 'ember-data'; export default DS.Model.extend({ });
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')}`; }) });
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') });
Il est également possible de définir ses propres transformers : voir Custom transforms
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(); } }) });