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,我正在使用它。因为这些元素只在索引
资源中通用,我还有登录
,单选
路由,它们有自己的模板,没有工具栏。我将尝试将路由从索引
移动到单独的资源,并保持索引
始终重定向,这应该对我有用。谢谢你的建议!