仅保存一个属性

时间:2011-12-29 20:54:44

标签: backbone.js

我有一个模型,我只想保存属性title。这就是我的尝试:

myBook.model.save(['title']);

问题是request.body是整个myBook.toJSON()对象,而不仅仅是相关属性title。这是设计,还是我做了一些愚蠢的事情?

1 个答案:

答案 0 :(得分:2)

这是设计的。

save调用Backbone.sync来保持对后端的更改,这反过来会导致更改:

if (!params.data && model && (method == 'create' || method == 'update')) {
  params.contentType = 'application/json';
  params.data = JSON.stringify(model.toJSON()); // <-- jsonifies the entire model
}

有很多方法可以覆盖此行为。您可以为模型提供sync方法,在这种情况下,它将被调用而不是Backbone的默认sync。或者您可以覆盖Backbone.sync来执行您想要的操作。

但是,大多数服务器端框架将能够处理接收完整的JSON对象并仅更新已更改的内容。为什么只需要将更改的属性发送到服务器?

旁注:save的第一个参数应该是属性的哈希值:{title: newBookTitle}而不是['title']。但我猜这可能只是一个简单的错误例子。