使用backbone.js在保存请求中发送额外的非模型数据?

Gro*_*ady 8 javascript rest backbone.js

我正在寻找一个解决方案来处理使用backbone.js的模型之间的状态问题.

我有一个时间跟踪应用程序,用户可以在其中启动/停止作业,它将记录作业的工作时间.我有一个工作模型,它保存工作的数据,以及它是否正在"开启".

一次只能处理一份工作.因此,如果用户启动作业,则必须停止当前正在运行的作业.我想知道这样做的最佳解决方案是什么.我的意思是我可以简单地相应地切换每个作业的'on'参数,然后在每个作业上调用save,但这会导致向服务器发出2个请求,每个请求都有一个完整的每个作业的表示.

理想情况下,如果我可以在保存请求中捎带其他数据,那将是很好的,类似于如何在获取请求中发送额外数据.我只需要发送当前正在运行的作业的id,因为这实际上与模型无关,它需要模型一起发送,而不是它的一部分.

有没有办法做到这一点?我想我可以找到一种方法来维护对当前作业服务器端的引用,如果需要:

rya*_*arc 8

当您调用保存功能时,第一个参数是要保存的数据的对象.而不是仅仅调用model.save(),创建一个具有模型数据和额外内容的对象.

触发保存的方法内部:

...
var data = this.model.toJSON();
data.extras = { myParam : someData };

this.model.save(data, {success: function( model, response ) {
    console.log('hooray it saved: ', model, response);
});
...
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要注意,虽然这确实发送了额外的非模型数据,但它将设置模型上的数据,然后成为模型数据.就像在我的情况下,你可能不想要这个,只是想在请求中发送1或2个额外的参数而不是模型.你需要`this.model.unset('foo',{silent:true})`然后删除其他属性 (2认同)
  • @RobinsGupta而不是评论2岁以上的答案是不正确的,为什么不添加更新的答案呢?2012年Backbone处于一个与今天截然不同的状态. (2认同)