在我的Backbone應用程序中,我有一個顯示帖子預覽的主視圖。當用戶點擊帖子時,該帖子將在疊加層中展開,並且網址將更改爲反映該帖子。當帖子被展開時,用戶可能會做一些事情觸發需要在根上下文中發生的服務器調用。問題在於,當帖子展開時,需要在根上下文中發生的服務器調用發生在帖子上下文中。這裏的操作順序:骨幹路由器,URL和測試/生產Web上下文
- 頁面加載主視圖網址:的http://本地主機:8080 /我-web應用程序/
- 用戶點擊後,疊加顯示,網址更新爲:http:// localhost:8080/my-web-app/posts/1
- 用戶單擊觸發對服務器的調用的內容。網址是:http:// localhost:8080/my-web-app/posts/1/load,這是錯誤的。
在上面的例子中,負載操作需要從根上下文的情況發生:的http://本地主機:8080/
我試圖改變我的網址,網頁應用程序/負載屬性爲我的模型,集合等包含領先的/,但是這會刪除「/ my-web-app /」上下文(URL變爲http:// localhost:8080/load)我的測試環境。當然,這在生產環境中可以很好地工作。
要解決這個問題,我已經設置了Backbone.history根選項是「/我-web應用程序/」,並已覆蓋每一個url屬性設置爲如下:
url: function() {
(Backbone.history.options.root != undefined ? Backbone.history.options.root : "") + "load";
}
雖然這種方法工程,這是一個痛苦的屁股覆蓋每個網址的功能,這樣...更不用說,它感覺哈克。對於生產環境來說,這也是完全不必要的代碼。有沒有更好的方法來管理它,以便它可以在測試和生產環境中使用?
謝謝!
我認爲這......它肯定會解決問題。我之所以沒有這樣做是因爲理論上我有可能使用同一臺服務器測試兩個webapps。在這種情況下,它將無法工作。也就是說,我現在只測試一個webapp,所以我會給這個鏡頭一個鏡頭。順便說一句,我正在使用tomcat ...同樣的概念適用於! – threejeez
你可以爲另一個webapp添加另一個虛擬主機,所以你可以在一臺服務器上測試多個webapps(但是使用不同的虛擬主機) – pawlik
正確,但只有一個可以在根目錄下(「/」)。所以從理論上講,所有其他webapps的javascript都會遇到與上下文路徑相同的問題。我確實對我的tomcat配置進行了同義改變,並且一切都很好。感謝您的建議! – threejeez