如果没有提供,则ember.js显示默认的嵌套路由

wil*_*art 5 ember.js

在我的ember应用程序(1.0.0生产版)中,我有一个URL结构如下:

/item
/item/{specific-item-name-defined-in-routes}
Run Code Online (Sandbox Code Playgroud)

路由器映射看起来有点像这样:

App.Router.map(function () {
    this.resource("item", function () { 
        this.resource("my-first-item");
        this.resource("another-item");
        ...
    });
});
Run Code Online (Sandbox Code Playgroud)

如果用户导航到/item我想要显示特定帖子(例如/item/my-first-item).我可以通过使用redirect路由的方法来做到这一点:

App.ItemRoute = Ember.Route.extend({
    redirect: function () {
        this.transitionTo('my-first-item');
    }
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我手动输入地址栏中的URL /item/another-item或直接导航到/item/another-item应用程序重定向我,请使用此方法/item/my-first-item.如果我只是在嵌套路由之间进行更改(即通过单击应用程序中的链接,它会正确加载).

只有在没有提供嵌套路由时,如何才能使重定向工作?

Mik*_*tti 10

而不是重定向项路由,将重定向挂钩添加到(自动生成的)ItemIndexRoute:

App.ItemIndexRoute = Ember.Route.extend({
  redirect: function () {
    this.transitionTo('my-first-item');
  }
});
Run Code Online (Sandbox Code Playgroud)