我正在使用流星useraccounts和铁路由器,但我的猜测是这将适用于流路由器。
使用Meteor useraccounts,您可以通过以下代码配置/添加signIn,forgotPWD等路线:
AccountsTemplates.configureRoute('signIn', {
name: 'signin',
path: '/login',
template: 'myLogin',
layoutTemplate: 'myLayout',
redirect: '/user-profile',
});
除了我还想允许根参数化路线之外,这一切都很好,花花公子:
Router.route '/:rootParam',
name: 'rootParam'
controller: share.WikiController
onBeforeAction: ->
rootParam = @params.rootParam
if rootParam in share.staticRoutes
Router.go(rootParam)
else
@next()
因此,如果用户前往具有项目ID的路由,则可以使用,但如果他们转到静态useraccounts路由,例如/ login,那么也可以。
我发现它始终触及参数路径,静态路由永远不会起作用。
答案 0 :(得分:1)
您无法在Router.go()
中执行onBeforeAction
。但是,您可以渲染路线。如果您的命名路由使用不同的布局,您可能还需要更改layoutTemplate
。
答案 1 :(得分:0)
我建议的一件事是,如果可以的话,不会超载路径的一部分,因为这可能会导致混淆哪条路线会被捕获。 /:itemid
会抓住/login
吗?如果您只看到/:itemid
路线,那将是有意义的。
尝试使用/items/:itemid
之类的内容,以便/login
和/items
是静态且唯一的。
Router.route('/items/:itemid', function () {
var item = Items.findOne({_id: this.params.itemid});
this.render('ShowItem', {data: item});
});
如果您真的希望/
路由到/items/:itemid
,您仍然可以在路线功能中进行重定向。
Router.route('/', function () {
//TODO: redirect to /items/:itemid
});