Ceci est une ancienne révision du document !
Route Models
Chargement : model hook
Une route est responsable du chargement du ou des models qui seront affichés dans le template associé.
Soit le fichier de routage suivant :
Router.map(function() { this.route('users'); });
Le chargement de models est réalisé dans la fonction model() (model hook) du router handler associé :
import Route from '@ember/routing/route'; export default Route.extend({ model() { return this.get('store').findAll('user'); } });
Généralement, le model hook retourne une instance Ember Data, mais il peut également retourner un objet promise (requête asynchrone par exemple), un objet javascript ou un tableau.
import Route from '@ember/routing/route'; export default Route.extend({ model() { return [ {name: 'Higgins', age: 40}, {name: 'Rosario', age: 20}, {name: 'Travis', age: 30} ]; } });
La valeur retournée par le model hook de la route est ensuite affectée à la propriété model du controller (implicite ou explicite). Il est ensuite possible d'utiliser le model dans le template associé.
<h1>Utilisateurs</h1> {{#each model as |user|}} <p>{{user.name}}</p> {{/each}}
Models dynamiques
Le ou les models chargés dépendent parfois des interactions avec l'utilisateur.