richclient:emberjs:data

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.

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')
});

  • 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

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

  • richclient/emberjs/data.txt
  • Dernière modification : il y a 5 ans
  • de 127.0.0.1