【发布时间】:2012-07-03 08:14:21
【问题描述】:
我有一个设置了一些路由的主干.js 路由器,如下所示:
routes : {
'a-route' : 'goToRoute',
'a-route/*splat' : 'goToRoute'
}
goToRoute : function(splat){
if(!splat) {
// do this
} else {
// do that with splat
}
当我做一个
router.navigate('a-route', {trigger : true});
一切正常。但是当我这样做时
router.navigate('a-route/more', {trigger : true});
路由器触发了两次:第一次 splat 等于 'undefined',然后第二次 splat 等于 'more'。
如果我注释掉路由 'a-route' : 'goToRoute',那么一切都可以正常使用 router.navigate('a-route/more') ......但我需要两条路线 - 有和没有啪啪啪。
根据文档,我认为我的设置正确,有什么想法吗?
【问题讨论】:
-
你已经拥有的有什么问题?只需从
splat === undefined重定向到您想从那里去的任何地方。 -
有不同的布局取决于是否有 splat === 'more' 或 splat === 'undefined'。目前,调用 router.navigate('a-route/more', {trigger:true}) 正在触发两个路由,因此它在同一页面上呈现两个布局
-
我的意思是,删除
a-route: goToRoute并在goToRoute中执行if (splat === undefined) {justARoute(); } else { splatRoute(splat); } -
如果我这样做,对 router.navigate('a-route') 的调用不会找到匹配项 - 页面不会呈现
-
我可能有错误的设置,但对我有用 jsfiddle.net/7u2Bg/1 有或没有 pushstate
标签: backbone.js backbone-routing