2015-11-23 75 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 –