2015-11-23 44 views
1

我在这里错过了一些东西。我想问题很简单。 mysite.com/app和mysite.com/transaction都加载了不同的html页面,但它们加载了相同的路由器。骨干路由器有多个root,如何正确加载?

因为我需要按顺序写我的路由器比 mysite.com/app/#/someparams触发器“应用”功能 mysite.com/transaction/#/someparams触发器“交易”功能,每一种情况下。 (有或无#我不在乎,但这是我的作品= /路)

如果我写:

routes: { 
    'app':'app', 
    'app/:params':'app', 
    'transaction':'transaction', 
    'transaction/:params': 'transaction' 
} 

Backbone.history.start({ 
    pushState: true 
}); 

然后mysite.com/app/#/params或mysite的。 com/transaction /#/ params不会触发想要的函数。

如果我这样写:

 Backbone.history.start({ 
     pushState: false, 
     root:'/app' 
    }); 

那么参数将是确定的/应用程序,但不是/交易。该怎么办 ?我敢肯定,我失去了一些东西简单,但我现在有点糊涂..

感谢您的帮助

回答

1

您的路由只希望您已经定义了两个路由的参数。

mysite.com/app/#/params 匹配app/:params#作为参数传入此处。

此外,哈希应位于路由映射之前。

mysite.com#app/params这将匹配骨干按照您的地图预期的路线。

您可以使用可选功能使用2条路线。

routes: { 
    'app(/:params)':'app', 
    'transaction(/:params)':'transaction' 
} 
+0

true但是然后加载了错误的html。 mysite.com =>登陆,mysite.com/app =>应用程序,mysite.com/transaction =>交易...任何想法如何roganize这? –

+0

@FrançoisRichard检查编辑 –

+0

你的意思是应用程序(/ *)?否则regexp错误被触发,但是当我使用应用程序(/ *)我的参数不通过...应用程序:fucntion(params){...当我尝试应用程序给我空参数/#/ wtv –