【问题标题】:Multiple Dynamic Segments in a Single Resource in Ember.jsEmber.js 中单个资源中的多个动态段
【发布时间】:2013-12-23 00:48:02
【问题描述】:

有没有办法让一个资源拥有多个动态段?我的用例是避免让用户点击索引路由。

例子:

this.resource('tracks', { path: 'albums/:album_id/tracks/:tracks_id' });

我想避免用户点击以下路线:

albums/:album_id
albums/:album_id/tracks
albums/:album_id/tracks/:track_id

路线:

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' });
    });
  });
});

任何帮助将不胜感激。

Defining Your Routes

注意:如果您使用 this.resource 定义资源并且不提供 函数,则不会创建隐式 resource.index 路由。

【问题讨论】:

  • 我假设您找到了解决方案,因为这绝对是可能的。

标签: javascript ember.js url-routing


【解决方案1】:

我们可能的解决方案是使用以下方法:

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

【讨论】:

    【解决方案2】:

    为了完整起见,索引路由不是必需的,如果你定义它们,它们只是一个免费的便利,如果你不定义它们就不会去它们。

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

    您可以在单个路径中定义多个 slug 并直接访问它,只需注意您将只有一个模型用于该单个资源,因此您必须处理它。

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

    【讨论】:

    • 这是一个很好的解释。您的第一点是有道理的,但由于我们有嵌套资源,Ember.js 会自动创建索引路由。所以我们不能走第一条路线。第二条路线很有意义,但我们需要两个模型(以后可能会更多)。
    • 我希望有一种更简单的方法,但我们基本上必须在索引路由上创建一个重定向。
    【解决方案3】:

    最好使用 Ember 的嵌套路由。每条路线都有自己的动态路段。

    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' });
                });
            });
        });
    });
    

    如果您想在点击专辑后立即向用户显示第一首曲目,您可以使用重定向。

    App.AlbumRoute = Ember.Route.extend({
        afterModel: function (album, transition) {
            this.transitionTo('track', {album_id: album.id, track_id: album.tracks[0].id});
        },
    });
    

    查看有关重定向的文档:http://emberjs.com/guides/routing/redirection/

    【讨论】:

    • 在直接通过 URL 访问问题中的索引路由时,我们最终重定向到了应用程序的索引页面。我们想要避免的是创建这些索引路由(AlbumsIndexRoute 等),因为我们的 UX 有点不同。如果我们可以在定义资源时指定是否需要这些索引路由,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2013-11-04
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多