我的問題涉及此UI示例。Backbone.js UI中管理UI狀態/處理選擇的方法
經與方法來管理各種UI視圖分量的「選中」狀態的麻煩。例如,我有上面的菜單,用戶從中進行各種選擇。這些選擇應該會引起菜單本身的更新(HL選定的項目),並且會導致結果更新,這將根據所作的選擇進行更新。另外,菜單有不同的規則。例如,您一次只能選擇一個「列表」,但您可以選擇多個「標籤」。
的一種方法,我在想是要創建包含UI「選擇」的狀態的主幹模型。例如,我可以有一個模型SearchCriteria來保存這些信息。然後,當用戶在UI中做出選擇時,我可以更新此模型。我可以讓各種視圖組件監聽此模型中的更改(以及主數據模型中的更改)。然後,視圖將通過更新哪些項目顯示爲選中來更新其視覺狀態。
一個項目,我用這種方法掙扎是誰應該負責更新項目的選定狀態。例如,標籤的名單上,我可能有以下幾部分定義...
- 標籤(模型來表示一個標籤)
- TagCollection(集合代表標籤的集合)
- TagMenuView (觀點代表了可供選擇的標籤菜單)
- TagMenuItemView(視圖,它表示菜單中的單個項目)
我應該......
- 設置在TagMenuItemView用於點擊事件偵聽器,然後嘗試處理1)更新所述SearchCriteria模型,和2)更新菜單,例如視覺狀態選擇的項目?
- 或者,我應該有更高層次的視圖(TagMenuView)監聽事件,如用戶選擇一個標籤,並執行那裏工作?
- 此外,本示例中的標籤菜單允許選擇多個項目,但列表菜單一次僅允許選擇一個列表。這個「用戶界面」規則(或者這是否與搜索有關的業務規則?)會在哪裏執行?例如,如果我在每個單獨的列表菜單項上監聽點擊事件,我當然可以更新該項目的視覺狀態,但是,我還需要確保更高級菜單視圖取消選擇其他所選列表。那麼,管理視圖中待辦事項列表菜單(代表整個菜單(ToDoListMenuView)而不是每個單獨的菜單項視圖)中的「UI」狀態會更好嗎?
對不起,這麼多的問題。我只是很難轉向這種發展模式。
謝謝精靈。聽到別人怎麼看待這些事情,正幫助我處理這件事。我已經創建了一個SearchCriteria模型,並且如您所描述的,我的視圖監聽更改。我只需更新標準和視圖就可以正確更新。我最終將標準的實例存儲在最高級別的應用程序視圖中,然後在初始化時將其傳遞給子視圖。我選擇單獨傳遞它,而不是默認的「模型」,因爲我的一些其他視圖需要使用純數據項的模型,比如標籤或待辦事項列表等。 – Kevin 2011-06-10 22:06:31