2012-02-14 81 views
3

我們有一個Backbone.js應用程序,這很正常,因爲您可以單擊菜單項,獲得項目網格,單擊網格中的項目,網格隱藏和你看到的表格,你保存或取消表格,表格被銷燬,網格顯示和更新。backbone.js管理主詳細視圖和歷史記錄

它比這個稍微複雜一點,因爲應用程序的不同部分可以從特定的表單獲得,有時候您可以使用網格 - >表單 - >另一種表單,並且您需要返回到第一個表格然後是網格。它並不是一個真正的嚮導,它只是一些複雜的形式,我並不想真正將「根視圖」或麪包屑編碼到視圖中。

所以我的問題是我無法弄清楚如何將它與Backbone路由器集成。我只用ajax調用就可以了,但我們需要後退按鈕功能。我正在看的是擁有一個狀態對象或模型,並且有一堆視圖,當你點擊取消它將銷燬表單並彈出前一個視圖。

但是,這將不允許使用書籤,因爲您必須通過瀏覽應用程序來構建堆棧,以及如果它們沒有單擊取消(這會銷燬視圖並彈出堆棧),但是會再次點擊你的中間視圖,但第三個視圖仍然在堆棧中。

我想要做的是有一個URL(我在後端使用MVC所以它會很好地使用控制器/動作/ ID網址)#usergrid/list then#usergrid/list/user/addupdate/3 then#usergrid/list/user/addupdate/3/someothercontroller/someotheraction/4

但是a)我無法弄清楚如何讓路由器來適應這一點和b)我將不得不解析在URL之間進行某種劃分會很困難的參數,以及c)我可以認爲用路由進行劃分的唯一方法是基本上指定每個URL的每個可能的變體。

任何有關此事的經驗或見解都將非常感激。

回答

0

我偶然發現了完全相同的問題。沒有比正則表達式路線 更好的了(它們令人驚訝地被Backbone支持)。也就是說,而不是routes: { 'some-form': '/showThatForm' }使用routes: { new RegExp("(.+?)/some-form$"): 'showThatForm' }或類似的東西。

而且,centralized event dispatcher證明在這個方案中是有用的。

也許,這不是最好的解決方案 - 但它對我來說效果很好。