从 url 填充 Backbone 集合后,我遇到了模型消失的问题。如果我只是将数组传递到集合中,代码就可以工作。
收藏:
var CustomerList = Backbone.Collection.extend({
model: Customer,
url: "/customer_list/json"
});
网址返回:
[
{
"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); 它返回一个空数组。这意味着集合不会被迭代,因此永远不会被渲染。如果我只是手动传入客户列表,这同样可以正常工作。
任何帮助将不胜感激。