我有一个对象也保存在服务器中,我正在从该对象创建一个Backbone模型。
但是当我保存模型时,它正在执行PUT请求,这不是我想要的。如何告诉Backbone数据已经在服务器中而不进行提取?
答案 0 :(得分:19)
Backbone通过checking if an id is set确定模型的新颖性:
isNew
model.isNew()
此模型是否已保存到服务器了?如果模型还没有
id
,则认为它是新的。
当你保存模特时,
正如@JayC在评论中指出的那样:
如果存在ID无法成为id
的问题,您可以使用idAttribute
来说明“身份”或关键字段。
答案 1 :(得分:-1)
在这里加上我的两分钱,希望它避免了我必须做的一些头发拉动。
直接通过构造函数将模型的id属性设置为false或null将无法解决问题,您必须通过删除实际将其从内存中删除
例如,我只是努力将属性从一种模型类型复制到另一种类型作为新模型:
copy = Trip.clone()
#doesn't unset the id attribute
schedule = new models.Schedule(_.extend(copy.attributes, {id:null, trip_id:id})
#does unset the id attribute
delete schedule.id
schedule.save null, success: =>
# back from POST vs PUT
...