我将Backbone.Associatons用于我的项目。 该库修改了Backbone.Model的toJSON方法。 我自己也修改了它,用于我使用的模板引擎。
我现在基本上有一个嵌套的Backbone.Models(或者在toJSON调用之后的JSON对象)和一些其他属性的大对象。
当我编辑模型并使用patch:true选项调用save()方法时,我可以将数据作为JSON对象提供,并且只将此数据发送到服务器。
model.save(modelData, {patch: true});
然而,当我的模型是新的并且Backbone执行POST请求时,它通过调用toJSON来序列化我的模型的数据,即使我提供了一个数据对象作为save方法的第一个参数。
因此,不接受发送到服务器的数据,因为它具有所有这些嵌套属性。
如何在POST数据时使Backbone使用自定义toJSON方法,或者如何使用我在save方法的第一个参数中提供的数据?
答案 0 :(得分:0)
也许解决方案不是很好,但你可以将不会被发送的数据移动到临时变量(如果以后需要)。
//...
// use silent if something is listening to `change` event
var silent = { silent: true };
var tmp = model.toJSON();
model
.clear(silent) // remove everything from the model
.save({ foo: 'bar' }); // send only required data
model
.clear(silent) // remove data that was sent
.set(tmp, silent); // set back initial data
//...
但可能存在与数据的冲突,这些数据来自保存后的响应