Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
richclient:emberjs:data [2018/01/26 12:45] – créée jcheron | richclient:emberjs:data [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Les Models correspondent aux classes métier de l' | Les Models correspondent aux classes métier de l' | ||
- | 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. | + | 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 ===== | ||
+ | |||
+ | <sxh bash; | ||
+ | ember generate model person | ||
+ | </ | ||
+ | |||
+ | Ce qui génère le Model suivant : | ||
+ | <sxh javascript; | ||
+ | import DS from ' | ||
+ | |||
+ | export default DS.Model.extend({ | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ===== Ajout d' | ||
+ | |||
+ | Ajout d' | ||
+ | <sxh javascript; | ||
+ | import DS from ' | ||
+ | |||
+ | export default DS.Model.extend({ | ||
+ | firstName: DS.attr(), | ||
+ | lastName: DS.attr(), | ||
+ | birthday: DS.attr() | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Un model peut aussi définir des computed properties : | ||
+ | <sxh javascript; | ||
+ | import DS from ' | ||
+ | import { computed } from ' | ||
+ | |||
+ | export default DS.Model.extend({ | ||
+ | firstName: DS.attr(), | ||
+ | lastName: DS.attr(), | ||
+ | |||
+ | fullName: computed(' | ||
+ | return `${this.get(' | ||
+ | }) | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ==== Transforms : dataTypes ==== | ||
+ | |||
+ | La méthode **DS.attr** peut définir le type de données en passant en paramètre un transformer : | ||
+ | <sxh javascript; | ||
+ | import DS from ' | ||
+ | |||
+ | export default DS.Model.extend({ | ||
+ | name: DS.attr(' | ||
+ | age: DS.attr(' | ||
+ | admin: DS.attr(' | ||
+ | birthday: DS.attr(' | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | * **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 [[https:// | ||
+ | ==== Default value ==== | ||
+ | |||
+ | <sxh javascript; | ||
+ | import DS from ' | ||
+ | |||
+ | export default DS.Model.extend({ | ||
+ | username: DS.attr(' | ||
+ | email: DS.attr(' | ||
+ | verified: DS.attr(' | ||
+ | createdAt: DS.attr(' | ||
+ | defaultValue() { return new Date(); } | ||
+ | }) | ||
+ | }); | ||
+ | </ | ||