URL からバックボーン コレクションを作成した後、モデルが消えるという問題があります。配列をコレクションに渡すだけで、コードは機能します。
コレクション:
var CustomerList = Backbone.Collection.extend({
model: Customer,
url: "/customer_list/json"
});
URL は次を返します。
[
{
"id":"870000",
"name":"vitae odio",
"contact_name1":"ame",
"contact_number1":"345634565246",
"contact_name2":"",
"contact_number2":"",
"address_line1":"Ap #489-8375 Ornare, Ave2",
"address_line2":"",
"town":"Stillwater",
"county":"Herefordshire",
"postcode":"JV5H 2QH",
"email":"parturient@vitae.edu",
"created_at":"0000-00-00 00:00:00",
"updated_at":"2012-08-18 16:44:36"
},
{
"id":"870001",
"name":"mauris, aliquam",
"contact_name1":"Quail",
"contact_number1":"82733186940",
"contact_name2":null,
"contact_number2":null,
"address_line1":"Ap #921-368 Cras Ave",
"address_line2":null,
"town":"Lake Charles",
"county":"Essex",
"postcode":"AP6 0KZ",
"email":"vitae.dolor@Quisque.edu",
"created_at":"0000-00-00 00:00:00",
"updated_at":"0000-00-00 00:00:00"
}
]
景色:
$(function() {
/* Customer View */
var CustomerView = Backbone.View.extend({
tagName: 'tr',
className: 'customer-row',
template: _.template($('#customerRowTemplate').html()),
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this.el;
}
});
/* Customer List View */
var CustomerListView = Backbone.View.extend({
el: $('#customers'),
initialize: function() {
this.collection = new CustomerList();
this.collection.bind('reset', this.render());
this.collection.fetch();
},
render: function() {
console.log(this.collection);
console.log(this.collection.models);
_.each(this.collection.models, function(customer) {
this.renderCustomer(customer);
}, this);
},
renderCustomer: function(customer) {
var customerView = new CustomerView({
model: customer
});
var html = customerView.render();
this.$el.find('#customer-list').append(html);
}
});
var customerList = new CustomerListView();
});
console.log(this.collection); を呼び出すとき。モデル配列の長さが 366 であることを示しており、インスペクターですべてのモデルを表示できます。
しかし、console.log(this.collection.models); を呼び出すとき。空の配列を返します。つまり、コレクションは繰り返されないため、レンダリングされません。ここでも、顧客リストを手動で渡すだけで問題なく動作します。
どんな助けでも大歓迎です。