管理视图、视图容器和视图JavaScript 应用程序中的布局?
我有一个 JavaScript Web 应用程序,在初始化时,它采用图表类型参数。 ChartType 值(例如“populationPyramid”或“scatterGram”)应确定应用程序的布局状态。在“populationPyramid 模式”下,应用程序应该有一个小的侧边栏视图和一个额外的标题视图。 (总而言之,应用程序可能有 4 种不同的布局,具有自己的 css 设置。)
假设populationPyramid 有一个模型、一个控制器和多个视图,每个视图都应该有自己的 div 容器。
1)在初始化应用程序或更改状态时如何轻松注入必要的html? JavaScript 模板可以帮助我吗?
2)如何在每个视图的基础上处理 window.resize 事件? 谢谢。
I have a JavaScript web application which, when being initialized, takes a chartType parameter. The chartType value (for example "populationPyramid" or "scatterGram") should determine the layout state of the app. In "populationPyramid mode", the app should for example have a small sidebar view and an extra heading view. (All in all there might be 4 different layouts of the app with their own css settings.)
Let's say the populationPyramid has a model, a controller and a number of views that each should have its own div container.
1) How do I easily inject the necessary html when initing the application or when changing state? Can JavaScript templates help me?
2) And how do I handle window.resize events on a per view basis?
thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试客户端 MVC 框架,例如骨干或脊柱。
您可以使用 hashbang url 路由系统来更改每个图表的“页面”或“布局”。
您可以使用模板/视图来呈现页面/布局,并且可以使用 JavaScript 中的模型来保存所有状态。
初始化应用程序时,您只需通过 ajax 连接获取一些数据,将其存储在模型中,然后通过视图渲染它。当你的路由器检测到 hashbang url 页面更改时,你会通过 ajax 获取一些不同的数据并渲染它。
模型/视图上的解构函数应该删除事件。因此,每当您创建新的客户端视图时,您都会为该视图重新绑定特定事件。
Try a clientside MVC framework such as backbone or spine.
You can use a hashbang url routing system to change your "page" or "layout" for each chart.
You can use templates/views to render your page/layout and you can use models in JavaScript to hold all your state.
When you initialize the application you simply grab some data through your ajax connection, store it in your model and then render it through your view. When your router detects a hashbang url page change you get some different data through ajax and render that instead.
Your deconstructors on your model/views should remove events. So whenever you create a new client side view you rebind specific events for that view.