我剛剛完成開發我的第一個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在我的代碼中的某處添加重複的文件夾名稱。我只是刪除它,一切按預期工作。
你能分享你的確切代碼(與回調)?我剛剛在一個子目錄中創建了一個路由器,它工作的很好。 –
還有什麼問題,「它不會當我從子文件夾提供」? –
這個問題出現在我的代碼中的其他地方,我打電話給router.navigate('/ subdir /'),它被添加到url中,使得子目錄名稱被複制。撤銷這個技巧並且它現在可以工作。 – Fakito