我的路线如下:
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
路由。我正在尝试找到解决方案如何实现从index
到label.notes
的重定向。文档中描述的方法之一是:
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('label.notes', 0);
}
});
这是带有完整示例http://jsbin.com/UnasOse/1/edit
的jsbin如果用户通过点击链接进行导航,但是如果网址已打开manage
,或者页面更新用户将被重定向到notes
,则此方法有效。
那么,如何实现重定向只有用户打开根URL(index
)?
答案 0 :(得分:1)
使用您当前的路由器映射,您拥有路由index.manage
和label.notes
。
当页面在index.manage
中刷新时,首先它将转换到父路线,在这种情况下转换为index
,然后转移到manage
。但是在您index
中,您有重定向,因此不会处理管理。
只需移除resource('index')
的映射并更新您的管理路由以反映新配置,因此链接到index.manage
将变为manage
,并且data-template-name = 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 http://jsbin.com/ucanam/1024/edit
中查看该示例