Backbone fetch无法按预期工作

时间:2012-01-15 21:21:24

标签: backbone.js

当我在我的集​​合上调用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)})

1 个答案:

答案 0 :(得分:2)

Damm,它是我模型中的validate方法。我虽然验证必须返回一个布尔值,但在阅读docs之后,它只有在模型无效时才返回错误消息。

 validate: function() {
         if (!this.get('order_items').length){
             return 'set minium of one product before save the order'
         }
    },