Backbone / JavaScript忽略新对象

时间:2011-06-03 16:51:02

标签: rest model backbone.js

Backbone似乎忽略了new运算符。在以下代码中,库存取决于每个调用的不同产品。 Backbone的第一个调用是POST - 该模型不存在 - 但即使每次都创建PUT,以下都是new StockModel。骨干的模型是单身吗?

if (validName && validPrice) {
    this.collection.create({ 
        name: name.val(),
        price: price.val()
    }, { success: function(product) {
        var stock = new StockModel();
        var productId = product.get('id');
        stock.setProduct(productId);
        stock.set({ quantity: 10 });
        stock.save();
    }});
}

Stock是一种资源:/product/{id}/stock

我的错误;错误发生在这一行(在stock.set方法中设置productId似乎是无序的Backbone):

stock.set({ id: product.get('id'), quantity: 10 });

如果我用以下内容替换上一个,一切正常:

stock.set({ id: 0, quantity: 10 });

product.get('id')是一个int

1 个答案:

答案 0 :(得分:0)

我很确定问题是您使用id: product.get('id')作为库存商品id。 Backbone使用id来确定天气是否是新对象。我将其重命名为productId: product.get('id')。很难准确地从上面的代码片段中准确地说出你正在做什么,但我怀疑这是问题所在。在初始保存时保留id,并让服务器正确分配。如果从服务器返回库存对象,主干应该为您排序。

希望这有帮助!