2015-02-11 31 views
0

我十分贊同JS和骨幹經驗豐富的分離,但希望你的幫助集思廣益的最佳實踐解決以下問題:主幹網設計 - 多視圖,同型號,事件

有兩種觀點。他們並排坐在頁面上同時運行。 這兩個視圖都傳遞給模型的同一個實例。 這兩個視圖都有可以更新模型的操作。

如何使用Backbone的事件驅動編程,您認爲將區分從視圖觸發的事件視爲最佳方式。

可能的情況可能是: 用戶執行的操作會在View A上以無效的方式更新模型。但由於用戶沒有在View B上執行操作,因此不應在此處通知他們。

+0

對提供的答案有任何反饋? – cabe56 2015-03-05 16:06:48

回答

0

您可以使用中介對象來管理存儲庫(與數據庫的連接發生的對象)和視圖的實例化/操作之間的流程。
除了在視圖內將模型綁定到視圖外,您可以讓中間對象(通用控制器)在重新渲染具有修改後的模型或集合的視圖之前進行驗證(如果需要操作)。
通過使用事件聚合器,您可以從視圖內的視圖中觸發事件,並從「控制器」對象中偵聽事件,而該對象又將執行所需的自定義操作。

0

使用自定義事件似乎很簡單。只要將每個視圖的操作視爲不同,併爲每個視圖命名不同的事件(例如this.trigger('view1:event1'),this.trigger('view2:event2'))。

確保視圖訂閱了這些特定的自定義事件,以避免在兩個視圖上觸發事件(如屬性更新)的操作發生衝突。