我有一个模型,我只想保存属性title
。这就是我的尝试:
myBook.model.save(['title']);
问题是request.body
是整个myBook.toJSON()
对象,而不仅仅是相关属性title
。这是设计,还是我做了一些愚蠢的事情?
答案 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']
。但我猜这可能只是一个简单的错误例子。