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对象)。

现在,所有你的意见可以听这个共同的调度点,如果事件相匹配,这种看法正在寻找一个,你可以通过查看创建相应的各个环境。 这种方法绝对有助于分割视图,从而导致更多模块化和可维护的代码。