【问题标题】:backbone.js - views within views and managing events主干.js - 视图中的视图和管理事件
【发布时间】:2012-06-06 11:42:12
【问题描述】:

组织视图的好方法是什么?假设我有一个 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() 新数据并刷新视图;

【问题讨论】:

标签: javascript jquery backbone.js underscore.js


【解决方案1】:

我是第二个狗狗朋克。我会有一个用户集合/视图。因为您上面描述的整个层次结构都是关于那个用户集合的。它的所有功能都操作该集合,然后您重新呈现用户视图。

如果您只想将更改应用于该用户的服务器,您可以将第二个用户视图(一个用户)绑定到模型。

【讨论】:

    【解决方案2】:

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

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

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

    我试图避免的做法是完全按照其中的 HTML 类型来存储视图,所以我不会将模块的视图存储为“表格”,因为如果稍后它更改为列表,这会让人感到困惑。显然,如果我有一个“表”插件,那么它的视图将是一个表,但是更改 JavaScript 视图意味着无论如何将插件调用从“表”更改为“列表”。

    【讨论】:

      【解决方案3】:

      我对您最初的问题的 2 美分。如果你真的想让它成为一个 MV*,那么分页就是一个视图,你的表格就是一个视图。并让您的收藏发送(触发)事件以更改您的视图。我还要问自己的另一个问题是当我的收藏发生变化时会受到什么影响?例如,在您的情况下,我认为集合更改不会直接影响您的 userView,它只会影响 Table 和 Pagination。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多