Backbone Model为POST保存设置数据

时间:2014-04-20 19:22:17

标签: javascript json backbone.js

我将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方法的第一个参数中提供的数据?

1 个答案:

答案 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

//...

但可能存在与数据的冲突,这些数据来自保存后的响应