2011-10-18 46 views
1

我正在構建一個使用多個SVG元素的Backbone.js應用程序。在Backbone.js/SVG web應用程序中管理佈局?

圖像下方顯示的基本設置 - 一個變量「小工具」應該填補大部分屏幕的。

每個窗口小部件的觀點是一個骨幹觀點,即(當它具有安裝與SVG其自己的DIV容器:SVG元素)實例化與SVG子視圖:ģ元素。

我有2個問題:
1)什麼是控制外部佈局的好方法嗎?
I.e.用戶應該能夠添加和移除水平流動的小部件(div),這應該反映在URL狀態中。 (每個對應的WidgetModel序列化)。

2)什麼是控制內部佈局的好方法嗎?
I.e.當瀏覽器窗口調整大小時,內部SVG子視圖如何獲得它們的寬度/高度。 我走上這之前是有一個(窗口).resize處理的方法,可以找出部件尺寸,並通過模型所有視圖和子視圖通過佈局:

$(window).resize(function() {    
    var activeWidgets = [widgetModel1, widgetModel2 ...] 
    each activeWidgets 
     widgetModel.set({width: widgetWidth, height: widgetHeight}) 
}); 

但也許這是不必要的破解?另一種方法是每個WidgetView都有自己的調整大小處理程序,但是我必須將寬度/高度傳遞給需要顯式值的子視圖?

enter image description here

謝謝:)

回答

0

我不完全你想要做什麼瞭解。窗口大小調整時會發生什麼?所有的小部件都會改變它們的尺寸嗎?怎麼樣?

另一個問題是:做的寬度和高度都屬於在模型?你會將它與小部件一起保存嗎?或者只是用於顯示(你可以計算出它根據窗口大小?)

如果他們只是爲了顯示,保持它的意見。擁有一個管理所有WidgetView視圖的WidgetsView,然後窗口大小調整計算佈局並告訴每個WidgetView將其自身調整爲(寬度,高度)。然後我猜想每個WidgetView都知道它的內部視圖應該有多大,所以每個WidgetView都應該相應地調整內部視圖的大小。