Backbone.js - 视图中的子视图和事件管理

11

如何组织视图?比如说,我有一个包含用户管理面板视图的 div - 这里会显示用户列表和一些选项,例如选择每页显示多少个,排序选项,所在页面,筛选等等...

我是否需要一个外部视图来包含除表格和数据以外的所有内容?然后再有一个内部视图来包含表格及其数据?分页视图则应该有它自己的视图吗?点击事件如何更新用户视图?我对如何组织视图感到困惑,同时又需要触发不同事件以调用其他视图的render()/fetch()方法。

因此,基本的层次结构可能如下:

- User View
  - Table
    - List of Users
  - Pagination
    - List of available numbers to click
  - Filters
    - Possible filters to apply to the data

单击筛选器或分页中的数字应该能够让集合执行fetch()获取新数据并刷新视图;


1
我不是100%确定我理解你的问题,但也许这篇博客文章可以为你指明一个好的方向 将集合绑定到视图 - dogenpunk
这是我回答过的一个关于视图粒度的类似问题:https://dev59.com/LG855IYBdhLWcg3wPBpx#4464570 - Julien
3个回答

3

我赞同dogenpunk的观点。我建议只有一个用户集合/视图。因为上面描述的整个层次结构都是关于一个用户集合的。它的所有功能都操作该集合,然后重新渲染用户视图。

如果您希望仅针对单个用户应用更改,则可以拥有第二个用户视图,一个与模型相关联的单个用户。


0

我尽可能地反映我的服务器端MVC结构。

所有可以放入插件的东西,我都会这样做,然后将这些插件保存在与调用插件的控制器不同的位置。因此,在您的情况下,用户列表的表视图将保存在表插件中,或者如果这是我只想使用一次的代码,则可能保存在“用户”模块中。

如果我需要覆盖插件的输出,则将视图存储在模块文件夹中。

我试图避免仅根据其中包含的HTML类型存储视图,因此我不会将模块的视图存储为“table”,因为如果以后更改为“list”,那么这将变得混乱。显然,如果我有一个“table”插件,那么该插件的视图将是一个表格,但是更改JavaScript视图意味着只需将插件调用从“table”更改为“list”即可。


0

针对你的问题,我有一些看法。如果你真的想把它做成MV*,那么分页应该是一个视图,你的表格也应该是一个视图。并且让你的集合发送(触发)事件来改变你的视图。另外一个问题是当我的集合改变时会影响到什么?例如,在你的情况下,我认为集合的更改不会直接影响到用户视图,只会影响到表格和分页。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接