2013-07-01 49 views
1

我剛剛完成開發我的第一個Backbone應用程序,並且發現了一個我不能修復的Router的小怪癖。骨幹路由器根目錄中的url重複

我的路線是這樣的:

routes: { 
    '': 'index', 
    'jobs/:id': 'viewJob', 
    '*default': 'notFound' 
} 

它服務從服務器根目錄下的應用程序時能正常工作,但它不會,當我從一個子文件夾爲它服務。在這種情況下,我總是得到默認路由。

我雖然加入參數去骨幹歷史會做的伎倆,所以我說像這樣:

Backbone.history.start({ pushState: true, root: '/subdir/' }); 

有了這個應用程序似乎預計負荷,但路由器會自動添加所有的路由,它最終被複制,所以當我第一次訪問網站:

http://mysite.com/subdir/ 

它加載的應用程序,並將其更改爲:

http://mysite.com/subdir/subdir/ 

這會導致應用在重新加載頁面或使用瀏覽器後退按鈕時中斷,因爲該路由並不存在。

避免這種情況的方法是什麼?我不想在路由中對文件夾名稱進行硬編碼,因爲它可能會更改或從根目錄中提供。

更新:我剛剛意識到我正在使用router.navigate在我的代碼中的某處添加重複的文件夾名稱。我只是刪除它,一切按預期工作。

+0

你能分享你的確切代碼(與回調)?我剛剛在一個子目錄中創建了一個路由器,它工作的很好。 –

+0

還有什麼問題,「它不會當我從子文件夾提供」? –

+0

這個問題出現在我的代碼中的其他地方,我打電話給router.navigate('/ subdir /'),它被添加到url中,使得子目錄名稱被複制。撤銷這個技巧並且它現在可以工作。 – Fakito

回答

1

只是一個小猜測..你真的想pushState打開嗎?如果服務器沒有安裝到新目錄之外,這可能會導致重新加載時出現問題。

+0

我遇到了同樣的問題,它仍然重複了文件夾名稱,但它使用hashtag代替。 – Fakito