2

我的web應用程序,用Backbone.js編寫,我稱之爲「模式」。每種模式都描述當前處於活動狀態的模型和視圖。通過改變散列(#)中的模式參數,我在模式之間切換並實例化必要的骨幹模型&視圖。MVC/Backbone.js應用程序的JavaScript佈局管理?

它似乎是合乎邏輯還描述了優選的佈局和在模式級注入容器的HTML代碼。

假設模式「PopulationPyramidMode」有一個模型和3點骨幹看法。 「HeaderView」應該垂直佔用30個像素。 「SidebarView」應該水平佔用200個像素,「CanvasView」應該填滿屏幕的溼度並在縮放事件上縮放。

要事情進一步複雜的是,CanvasView持有可視化在調整大小必須被重新呈現,即,X/Y尺度必須重新計算。

那麼,什麼是這個最好的方法?

1)佈局邏輯應該到哪裏呢?
- 在一個單獨的layoutManager上 - 在這種情況下如何?
- 每個視圖應該描述其首選大小等嗎?

2)如何爲我的佈局注入必要的HTML/CSS並在它們之間切換?

<!-- Layout 1 --> 
<div id="header"></div> 
<div id="sidebar"></div> 
<div id="canvas"></div> 

<!-- Layout 2 --> 
<div id="header"></div> 
<div id="canvas"></div> 

感謝您提供任何特定的提示和一般的JavaScript佈局!

回答

0

想想這裏大聲。這聽起來像你可以有一個管理佈局的視圖,但能夠根據需要變形佈局。問題是:觸發佈局更改的是什麼?

您可能有一個控制器配備了這些不同模式的路線和動作。該控制器可以將實例保存到此佈局視圖並調用參數化刷新功能。或者,控制器可以在模式改變的情況下觸發事件,並且可以設置視圖來聽取它。一旦收到,視圖將調用其刷新功能。

0

我對構建這樣的應用程序的看法是使用直觀的觀察者模式。 設計你的控制器的方式只是在hashtag改變時發送特定的事件。在控制器中有一個事件映射表,它充當要發送的事件和URL之間的參考表,更好的是,您可以遵循關於散列部分選擇的特定約定,例如。每當用戶導航到網址mydomain.com/#part1/part2時,控制器將分派事件'evt_part1_part2'。你可以使用一個通用的調度點(可以是一個dom元素,或者是一個特別用於這個目的的javascript對象)。

現在,所有你的意見可以聽這個共同的調度點,如果事件相匹配,這種看法正在尋找一個,你可以通過查看創建相應的各個環境。 這種方法絕對有助於分割視圖,從而導致更多模塊化和可維護的代碼。