2011-04-17 59 views
11

组织视图的好方法是什么?假设我有一个包含用户管理面板视图的div,将会有一个用户列表,以及用于选择一次显示多少个数的选项,排序选项,要打开的页面,筛选器, etc ...backbone.js - 视图内的视图和管理事件

我想要一个外部视图,其中包含除表格和数据以外的所有内容吗?然后包含表格的内部视图(以及数据)?分页是否有自己的看法?分页视图如何使用click事件来更新用户视图?我只是对如何组织视图感到困惑,同时仍然能够通过不同的事件触发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%确定我明白你的问题是什么,但也许这篇博文会指出你一个很好的方向[将一个集合绑定到一个视图](http://liquidmedia.ca/blog/2011/ 02/backbone-js-part-3 /) – dogenpunk 2011-04-20 14:09:52

+0

有一个类似的问题,我回答了有关视图粒度:http://stackoverflow.com/questions/4463136/whats-the-appropriate-granularity-for-backbone-js-views/4464570#4464570 – Julien 2011-04-22 20:46:07

回答

0

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

所有可以放入插件的东西,我这样做,然后我把这些插件放在一个单独的位置与调用插件的控制器。所以在你的情况下,用户列表的表格视图可以保存在表格插件中,或者也可以保存在'用户'模块中,如果它是我真的只打算使用一次的代码。

如果我需要重写插件的输出,那么我将视图存储在模块文件夹中。

我试图避免做的是纯粹由HTML内部的类型存储视图,所以我不会将模块视图存储为'表',因为如果稍后它更改为列表,将会引起混淆。显然,如果我有一个'table'插件,那么这个视图将会是一个表格,但是改变JavaScript视图意味着只要将插件调用从'table'更改为'list'即可。

3

我第二个dogenpunk。我会有一个用户集合/视图。因为上面描述的整个层次结构都是关于那个用户集合的。它的所有功能都在操纵该集合,然后重新渲染用户视图。

如果您希望仅对该用户的服务器应用更改,则可以将第二个用户视图(单个用户)绑定到模型。

0

我的2美分到你原来的问题。如果你真的想让它成为一个MV *,分页将是一个视图,你的桌子将是一个视图。并让你的收藏发送(触发)事件来改变你的观点。另外一个问题,我会问自己,也是什么会影响我收藏的变化?例如,就你而言,我认为集合的改变不会直接影响你的userView,它只会影响表和分页。