让我们假设您的 HTML 页面中有一个表格,id="employee"
并且您已经定义了一个template
对应于表格中的行的表格。为简单起见,我们假设员工行只有firstname
和lastname
:
<table id="employee">
<thead>
<tr><td>Firstname</td><td>Lastname</td></tr>
</thead>
<tbody>
</tbody>
</table>
<script type="text/template" id="employee-template">
<td><%= firstname %></td><td><%= lastname %></td>
</script>
您需要两个views
来渲染表格,一个来渲染表格中的每一行。它们可能看起来像:
//a (table) view to render the list of employees
var employee_list_view = Backbone.View.extend({
el: $('#employee'),
initialize: function() {
this.collection.bind("add", this.render, this);
},
//this creates new rows in the table for each model in the collection
render: function() {
_.each(this.collection.models, function(data) {
this.$el.append(new employee_view({
model: data
}).render().el);
}, this);
return this;
}
});
//a (row) view to render each employee
var employee_view = Backbone.View.extend({
tagName: "tr",
template: _.template($("#employee-template").html()),
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
从服务器获取集合后,项目将存储在集合中。您可以使用以下代码查看检索到的数据。成功后,我们创建一个新的员工列表(在本例中为表)并传递员工集合。
var employee = new EmployeeCollection();
employee.fetch({
success: function() {
console.log(employee.toJSON());
new employee_list_view({collection: employee}).render();
},
error: function() {
console.log('Failed to fetch!');
}
});
注意:建议使用成功/失败回调。
看看JSFiddle 上的这个工作版本