请您通过木偶模板系统向我推荐一些显示列表视图的示例。基本上,我有一个木偶模板,基于模板,我正在创建一个表格列表。
答案 0 :(得分:37)
要使用Backbone Marionette创建表行列表,您需要定义五件事:
CollectionView
来遍历集合ItemView
以提供特定于行的功能ItemView
的模板,为每行提供标记假设您有以下数据:
var stooges = [{ name: 'moe', age: 44, userid: 1},
{ name: 'larry', age: 44, userid: 2},
{ name: 'curly', age: 44, userid: 3}];
对于以下数据,您需要一个模型:
var StoogeModel = Backbone.Model.extend({});
您可以在其中为数据和其他属性设置一些合理的默认值,例如idAttribute
。有很多关于如何自定义模型的参考资料。您的收藏集应至少采用stoogeModel
。
var StoogeCollection = Backbone.Collection.extend({
model: StoogeModel
});
要将您的收藏集迭代并渲染到表格中,您只需要CollectionView
和ItemView
。
var StoogesCollectionView = Backbone.Marionette.CollectionView.extend({
tagName: "table",
childView: StoogeItemView
});
所有CollectionViews
至少需要一个childView
ItemView
(我们在下面定义),他们将用它来推导为每一行创建html的功能,以及collection
这是包含填充每行的模型的集合。我们在实例化stoogesCollectionView
时会传递此集合。 tagName
属性告诉Backbone将子项封装在table
标记中。
var StoogeItemView = Backbone.Marionette.ItemView.extend({
tagName: "tr",
template: '#stooge-template'
});
<script type="text/template" id="stooge-template">
<td id="name"><%= name %></td>
<td id="age"><%= age%></td>
<td id="userid"><%= userid%></td>
</script>
所有ItemViews
都需要我们在HTML文档中定义的模板,此处为#stooge-template
。如果ItemView
是集合的子集,则不必定义其模型,它将由父CollectionView
提供。每个子StoogeItemView
呈现的HTML将由tr
标记封装,因为我们想要的是集合视图中每个子项的行。
从ItemView
您可以处理“行”级别的事件,例如行列上的click
或focus
。您还可以处理传入的模型的更改。此外,从ItemView
您可以决定传入可以操纵数据在其模板中显示方式的帮助程序。
现在我们已经定义了模型,集合,集合视图,子项视图和项视图模板。接下来,我们将连接所有这些部分。
将stooges数组传递给集合的构造函数。
var myStooges = new StoogeCollection(stooges);
这些塑造成模型,并加载你的收藏。
CollectionView
将已加载的集合传递到集合视图。
var myStoogesView = new StoogesCollectionView({ collection: myStooges });
所有Marionette视图都附带render
方法。在我们的例子中,调用
myStoogesView.render();
将创建一个<table>
,其中包含三个<tr>
元素,每个元素都包含一个列,分别用于数据集中的name
,age
和userid
字段。要在DOM中插入生成的HTML,我们只需使用视图的el
属性。对于简单,我们可以将视图直接注入身体
document.body.appendChild(myStoogesView.el);
或使用jQuery:
$(document.body).append(myStoogesView.el);
我们甚至没有开始讨论很多功能。阅读docs!并查看许多教程。希望这个简短的介绍有所帮助!