我刚刚开始使用 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/