Javascript 余烬父路由重定向到子路由

Javascript 余烬父路由重定向到子路由,javascript,ember.js,ember-router,Javascript,Ember.js,Ember Router,我的路线如下所示: App.Router.map(function () { this.resource('index', { path: '/' }, function() { this.resource('label', { path: '/label' }, function() { this.route('notes', { path: '/:label_id' }); }); this.route('man

我的路线如下所示:

App.Router.map(function () {
    this.resource('index', { path: '/' }, function() {
        this.resource('label', { path: '/label' }, function() {
            this.route('notes', { path: '/:label_id' });
        });
        this.route('manage', { path: '/manage' });
    });
});
用户只能访问
label.notes
manage
路线。我试图找到解决方案,如何实现从
索引
label.notes的重定向。文档中描述的方法之一是:

App.IndexRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('label.notes', 0);
    }
});
下面是jsbin和完整的示例

如果用户通过单击链接进行导航,但如果通过url打开了
manage
,或者页面更新后的用户将被重定向到
notes
,则此操作有效


那么,如何在用户打开根url(
索引
)时实现重定向呢?

使用您当前的路由器映射,您就有了路由
索引。管理
标签。注释
。 当页面在
索引.manage
中刷新时,首先它将转换到父路由,在这种情况下是
索引
,然后转换到
管理
。但是在您的
索引中
有重定向,因此不会处理管理

只需删除
资源('index')的映射,并更新管理路径以反映新配置,因此链接到
索引。管理将变为
管理
,数据模板名称=索引/管理管理等

更新后的路线图如下所示:

App.Router.map(function () {    
  // this.route('index', { path: '/' }); generated by ember
  this.resource('label', { path: '/label' }, function() {
    this.route('notes', { path: '/:label_id' });
  });
  this.route('manage', { path: '/manage' });    
});
您可以保留IndexRoute,因为ember默认创建一个
this.route('index',{path:'/'})
。因此,当用户转到
http://yoursite.com/


您可以在此jsbin中看到该示例的运行情况

使用您当前的路由器映射,您拥有路由
索引。管理
标签。注释
。
当页面在
索引.manage
中刷新时,首先它将转换到父路由,在这种情况下是
索引
,然后转换到
管理
。但是在您的
索引中
有重定向,因此不会处理管理

只需删除
资源('index')的映射,并更新管理路径以反映新配置,因此链接到
索引。管理将变为
管理
,数据模板名称=索引/管理管理等

更新后的路线图如下所示:

App.Router.map(function () {    
  // this.route('index', { path: '/' }); generated by ember
  this.resource('label', { path: '/label' }, function() {
    this.route('notes', { path: '/:label_id' });
  });
  this.route('manage', { path: '/manage' });    
});
您可以保留IndexRoute,因为ember默认创建一个
this.route('index',{path:'/'})
。因此,当用户转到
http://yoursite.com/


你可以在这个jsbin中看到这个示例,它是有效的,但是如果我丢失了模板嵌套,我已经用一个到jsbin的链接更新了我的问题,带有示例。嗯,路由的行为与前面的一样。如果要嵌套管理路由,可以使用此.resource('manage')…,并将新路由放入管理资源中。我是不是遗漏了什么?我的逻辑是-“索引”资源呈现公共元素-比如说带有链接的工具栏,可以在“管理”和“label.notes”中找到,所以我将它们包含在“索引”资源中。但是只打开工具栏(索引)没有意义,在这种情况下我需要重定向。为什么不使用
数据模板name=application
来呈现公共元素呢?如果您看到我的jsbin,我正在使用它。因为这些元素只在
索引
资源中通用,我还有
登录
单选
路由,它们有自己的模板,没有工具栏。我将尝试将路由从
索引
移动到单独的资源,并保持
索引
始终重定向,这应该对我有用。谢谢你的建议!这是可行的,但是如果我丢失了模板嵌套,我已经用一个链接更新了我的问题,链接到jsbin,带有示例。如果要嵌套管理路由,可以使用此.resource('manage')…,并将新路由放入管理资源中。我是不是遗漏了什么?我的逻辑是-“索引”资源呈现公共元素-比如说带有链接的工具栏,可以在“管理”和“label.notes”中找到,所以我将它们包含在“索引”资源中。但是只打开工具栏(索引)没有意义,在这种情况下我需要重定向。为什么不使用
数据模板name=application
来呈现公共元素呢?如果您看到我的jsbin,我正在使用它。因为这些元素只在
索引
资源中通用,我还有
登录
单选
路由,它们有自己的模板,没有工具栏。我将尝试将路由从
索引
移动到单独的资源,并保持
索引
始终重定向,这应该对我有用。谢谢你的建议!