Existe-t-il un moyen d'avoir plusieurs segments dynamiques avec une ressource unique? Mon cas d'utilisation est d'éviter de laisser l'utilisateur accéder aux itinéraires d'index.
Exemple:
this.resource('tracks', { path: 'albums/:album_id/tracks/:tracks_id' });
Et j'aimerais éviter que l'utilisateur ne frappe les routes suivantes:
albums/:album_id albums/:album_id/tracks albums/:album_id/tracks/:track_id
Routes:
this.resource('albums', { path: 'albums' }, function(){ this.resource('album', { path: '/:album_id' }, function() { this.resource('tracks', { path: 'tracks' }, function(){ this.resource('track', { path: '/:track_id' }); }); }); });
Toute aide serait grandement appréciée.
Définir vos itinéraires
REMARQUE: si vous définissez une ressource à l'aide de this.resource et ne fournissez pas de fonction, la route implicite resource.index n'est pas créée.
Il serait préférable d'utiliser les routes imbriquées d'Ember. Chaque route possède son propre segment dynamique.
App.Router.map(function () { this.resource('albums', { path: '/albums' }, function () { this.resource('album', { path: ':album_id' }, function () { this.resource('tracks', { path: 'tracks' }, function () { this.resource('track', { path: ':track_id' }); }); }); }); });
Si vous souhaitez montrer à l'utilisateur la première piste immédiatement après avoir cliqué sur un album, vous pouvez utiliser une redirection.
App.AlbumRoute = Ember.Route.extend({ afterModel: function (album, transition) { this.transitionTo('track', {album_id: album.id, track_id: album.tracks[0].id}); }, });
Consultez les documents sur la redirection: http://emberjs.com/guides/routing/redirection/
Pour l'exhaustivité, les itinéraires d'index ne sont pas nécessaires, ils ne sont qu'une commodité gratuite si vous les définissez, si vous ne les définissez pas, cela ne leur ira pas.
http://emberjs.jsbin.com/eMofowUQ/1/edit
Et vous pouvez définir plusieurs limaces dans un seul chemin et y accéder directement, notez que vous n'aurez qu'un seul modèle pour cette ressource unique, vous devrez donc faire face à cela.
Une solution possible pour nous était d'utiliser les éléments suivants:
App.AlbumsIndexRoute = Ember.Route.extend({ redirect: function(){ this.transitionTo('dashboard'); } });