javascript - 如何正确使用 Backbone.js 集合来显示列表

标签 javascript backbone.js

我刚刚开始使用 Backbone,对一个问题感到困惑。

我有一个显示文档列表的页面。

单击列表中的文档可打开完整文档进行编辑。

据我所知,在 Backbone 中对该列表建模的正确方法是作为文档模型的集合。

var DocList = Backbone.Collection.extend({
  model: document
});

但是文档模型会很大,有很多属性。该列表不需要显示所有这些信息。

我想知道是否最好有类似下面的东西......

var ShortDoc = Backbone.Model.extend({});
var shortDoc = new Doc({ 
  id: id,
  title: docTitle 
});
var DocList = Backbone.Collection.extend({
  model: shortDoc
});

...其中 shortDoc 仅包含生成列表所需的属性。

还是将集合与整个文档模型一起使用更可取?

(提前)感谢您的帮助

最佳答案

请记住,您可以为同一模型编写多个 Backbone.View。虽然您可能有一个显示整个文档的 DetailView,但您也可以自由创建一个 ItemView 以在 ListView 中展示每个文档的重要部分。虽然您的 DetailView 将包含厨房水槽,但 ItemView 可能仅限于显示标题:

var MyItemView = Backbone.View.extend({
  tagName: 'li',
  render: function () {
    this.$el.html('<h3>' + this.model.get('title') + '</h3>');
    return this;
  }
});

最后,如果您关心的是数据的数量:许多 Backbone 应用程序选择为应用程序中使用的每种类型的模型保留一个集合。他们的状态需要在某个地方维护;为什么不在一个漂亮的、有组织的列表中呢?您不需要在加载应用程序时引导每个模型属性。您可能会选择加载标题(或呈现初始列表所需的任何内容),并推迟获取模型,直到用户请求任何详细信息。

关于javascript - 如何正确使用 Backbone.js 集合来显示列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674153/

相关文章:

javascript - 如何默认将主干 View 设置为单例?

javascript - Marionette 路由器未定义

javascript - 尝试使用 "on"函数将事件监听器添加到集合(或模型)

javascript - React Gatsbyjs - 使用样式组件传递 props

javascript - 从ajax调用结果更新qtip内容

javascript - 如果日期相同则运行函数

javascript - 如何使用 requireJs 以正确的顺序定义 Controller 、路由器和应用程序

ajax - 在 Node.js 中使用 Websockets 进行资源管理

javascript - 从 GraphQL 到 Sequelize.js 的查询 SELECT ... WHERE COL1 = X AND (COL2 LIKE Y OR COL3 LIKE Y)

javascript - jQuery/JS : delete object from array and DOM