当我在我的集合上调用fetch
时,应用程序正在调用服务器,服务器返回一个对象数组。在fetch调用的成功函数中,我有一个空集合,原始响应包含服务器响应的所有对象。
集合
var OpenOrders = BaseCollection.extend({
model: Order,
url: baseUrl + '/api/orders?status=1'
});
模型
var Order = BaseModel.extend(
{
url:baseUrl + "/api/order",
defaults:{
order_items: new OrderList(),
location: 1,
remark: "remark"
},
initialize: function(options) {
var orderItems = this.get('order_items');
if (orderItems instanceof Array) {
orderItems = new OrderList(orderItems);
this.set({'order_items': orderItems})
}
orderItems.bind('change', _.bind(function() {
this.trigger('change')
}, this))
.bind('remove', _.bind(function() {
this.trigger('change')
}, this));
return this;
},
sum: function() {
return this.get('order_items').sum();
},
validate: function() {
return !!this.get('order_items').length;
},
add:function(product) {
this.get('order_items').add(product);
},
remove: function(product) {
this.get('order_items').remove(product);
}
);
获取集合
this.collection.fetch({success:_.bind( function(collection, response){
console.log('OpenOrdersListView', collection.toJSON())
// logs []
console.log('OpenOrdersListView', response)
// logs [Object, Object ...]
}, this)})
答案 0 :(得分:2)
Damm,它是我模型中的validate
方法。我虽然验证必须返回一个布尔值,但在阅读docs之后,它只有在模型无效时才返回错误消息。
validate: function() {
if (!this.get('order_items').length){
return 'set minium of one product before save the order'
}
},