Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| richclient:emberjs:router [2018/01/17 19:06] – jcheron | richclient:emberjs:router [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== | + | ====== |
| Le router EmberJs associe chaque URL connue à un ou plusieurs route handlers. | Le router EmberJs associe chaque URL connue à un ou plusieurs route handlers. | ||
| Ligne 12: | Ligne 12: | ||
| ===== Création de routes ===== | ===== Création de routes ===== | ||
| - | Avec ember-cli : | + | Pour générer une route avec ember-cli : |
| <sxh bash; | <sxh bash; | ||
| ember generate route route-name | ember generate route route-name | ||
| </ | </ | ||
| + | |||
| + | |||
| + | La commande generate route : | ||
| + | * crée le fichier js correspondant au route handler app\routes\route-name.js | ||
| + | * crée le template app\templates\route-name.hbs | ||
| + | * met à jour le router en ajoutant la route au map | ||
| + | * crée un fichier de test | ||
| + | |||
| + | Exemple de fichier router : | ||
| + | |||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Utilisation dans un fichier template avec le helper **< | ||
| + | |||
| + | <sxh html; | ||
| + | {{#link-to " | ||
| + | |||
| + | <nav> | ||
| + | {{#link-to " | ||
| + | {{#link-to " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Routes imbriquées ===== | ||
| + | |||
| + | Une route imbriquée permet d' | ||
| + | |||
| + | La route posts/new correspond à l' | ||
| + | |||
| + | Elle peut-être générée par la commande : | ||
| + | |||
| + | <sxh bash; | ||
| + | ember generate route posts/new | ||
| + | </ | ||
| + | |||
| + | |||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Le template posts.hbs devra dans ce cas faire appel au helper **< | ||
| + | |||
| + | <sxh html; | ||
| + | < | ||
| + | <!-- Display posts and other content --> | ||
| + | {{outlet}} | ||
| + | </ | ||
| + | |||
| + | ===== Routes index ===== | ||
| + | |||
| + | A chaque url, ember associe automatiquement une route index implicite : | ||
| + | |||
| + | La configuration suivante du router : | ||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | }); | ||
| + | </ | ||
| + | est équivalente à : | ||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Ember ajoute automatiquement un index à chaque appel de function. | ||
| + | |||
| + | Ainsi, pour une route imbriquée : | ||
| + | |||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | }); | ||
| + | </ | ||
| + | l' | ||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | A l' | ||
| + | |||
| + | A l' | ||
| + | |||
| + | ===== Segments dynamiques ===== | ||
| + | Une url avec segments dynamiques possède une ou plusieurs parties variables, introduites par un **:** et suivies par un **identifier**. | ||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | ==== Nommage des identifiers ==== | ||
| + | Pour faciliter le chargement des models, il est conseillé de respecter la convention de nommage suivante :\\ | ||
| + | un identifier devra respecter la norme **: | ||
| + | <sxh javascript; | ||
| + | Router.map(function() { | ||
| + | this.route(' | ||
| + | this.route(' | ||
| + | }); | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | |||