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
テーブルをレンダリングするために1つ、テーブルの各行をレンダリングするために1つが必要です。それらは次のようになります。
//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でこの作業バージョンを見てください