视图可以基于逻辑分组而不是视觉分组吗?

时间:2014-07-09 13:58:48

标签: javascript backbone.js

我的意思是,元素必须在视觉上组合在一起。

从数据的角度来看,我在服务器上有一个名为Accounts的表,它包含环境信息,例如用户所在的页面,它们的名称,图片的位置以及其他一小部分信息,直观地浏览一页应用程序。

然而,每行数据代表一个模型,我想要一个1到1的地图到视图。

这是数据的逻辑分组,但不是可视化分组。

这是O.K吗?

1 个答案:

答案 0 :(得分:2)

Backbone视图通常管理一个DOM元素,并采用一个模型。你可以让它们工作,但这不是一个好主意。当您的模型与项目中的名词对齐时,这很好,但这不是必需的。在这种情况下,听起来你的Accounts表主要与User模型对齐 - 它具有类似名称,头像等属性 - 即使它确实附加了一些额外的元数据。我认为这会很好地转化为Account模型。

但是,我建议不要坚持模型和视图之间的一对一映射。 Backbone的一大好处是,您可以通过多种不同方式在应用中显示相同的数据,Backbone将使它们保持最新状态。而不是试图构建一个管理整个页面的巨型视图,最好将Backbone视图视为“部分”或小组件,它们做得很好。通常使用Backbone router来转换页面的状态,并且您可能有一些具有 no 模型的Backbone视图,并且只是渲染一堆子视图。

例如,您可以使用NavBarView获取Account模型并显示页眉。它可以显示一个带有用户名称的下拉菜单。图片,添加自定义“«返回上一页”链接,并根据用户是否是管理员显示/隐藏一些链接。您还可以拥有一个EditAccountView,让用户可以更新自己的姓名和名称。图片;它具有相同的Account模型,但是以编辑形式显示用户数据。两个视图,但相同的模型 - 如果NavBarView正在模拟模型上的change事件,它将自动为您更新页眉。