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

richclient/emberjs/data.txt · Dernière modification: 2018/02/03 14:35 par jcheron
GNU Free Documentation License 1.3
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0