2012-10-30 112 views
3

我正在考慮構建我的Backbone應用程序的最佳方式。問題是我有各種複雜的狀態,每個狀態都由一些視圖顯示,而其他所有視圖都隱藏起來。Backbone.js:查看狀態和路由

在Backbone中處理這個問題的規範方法是什麼?我想過的兩件事情是通過路由器控制狀態(調用視圖隱藏/顯示方法)或使視圖監聽路由事件。

第一種方法的問題是路由器必須知道應用程序中存在的所有視圖。

與第二個解決方案的問題是,我必須作出所有意見聽取所有事件和隱藏其中的任何一個,但夫婦,讓他們展示。

感謝您指點我的精益解決方案。

+0

錯誤模型,狀態視圖訂閱。通過該模型調用錯誤事件(通過這種方式,所有組件都知道一個通​​用總線模型) – Deeptechtons

回答

1

我可以分享我的個人經驗與這樣的問題。我不知道這是否是最好的解決方案,但它對我有用。

我的問題更糟,因爲我有幾個路由器,他們每個人都應該隱藏/顯示屬於它的視圖。我選擇的解決方案與您考慮的第一個選項類似。

在我的路由器中有一個數組,其中包含所有現有的視圖。當狀態發生變化並執行路由回調時,所有其他視圖都將隱藏在此簡單代碼view[i].hide()中,並顯示正確的代碼。如果你想有更多的控制權,你可以創建View模型和視圖集合。

我認爲這是一個更好的解決方案,因爲當您添加新路線時,您不必將路線事件添加到所有視圖。此外,您的觀點與路由器保持分離,他們甚至可能不知道它存在。

2

我使用FSM機器來改變應用程序的狀態。每個州顯示並隱藏適當的視圖。我的觀點使用過渡動畫進出,所以改變狀態更復雜,然後簡單地顯示/隱藏 - 它從一種狀態進入和退出到另一種狀態。我已經分叉https://github.com/fschaefer/Stately.js以適合我的需求。