11

我有一个对象也保存在服务器中,我正在从该对象创建一个主干模型。

但是当我保存模型时,它正在执行 PUT 请求,这不是我想要的。如何告诉 Backbone 数据已经在服务器中而不进行获取?

4

2 回答 2

19

Backbone 通过检查是否设置了 id 来确定模型的新鲜度:

是新的 model.isNew()

这个模型已经保存到服务器了吗?如果模型还没有id,则认为它是新的。

当你保存模型时,

  • 如果是新的,将发出一个 POST 请求,
  • 如果是更新(已设置 id),将发送 PUT 请求

骨干同步文档


正如@JayC在评论中指出的那样:

如果存在 id 不能从字面上理解的问题id,您可以用idAttribute它来说明哪个是“身份”或关键字段。

于 2012-04-11T16:51:01.670 回答
-1

在这里加上我的两分钱,希望它能避免我不得不做的一些头发拉扯。

直接通过构造函数将模型的 id 属性设置为 false 或 null 不会成功,您必须通过 delete 将其从内存中实际删除

例如,我只是努力将属性从一种模型类型复制到另一种类型作为新模型:

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   
  ...
于 2012-07-10T01:53:59.900 回答