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