Plusieurs segments dynamiques dans une ressource unique dans Ember.js

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.

http://emberjs.jsbin.com/eMofowUQ/2/edit

Une solution possible pour nous était d'utiliser les éléments suivants:

 App.AlbumsIndexRoute = Ember.Route.extend({ redirect: function(){ this.transitionTo('dashboard'); } });