2012-03-20 45 views
8

我正在寻找一种解决方案来处理使用backbone.js的模型之间的状态问题。使用backbone.js在保存请求中发送额外的非模型数据?

我有一个时间跟踪应用程序,用户可以开始/停止作业,它会记录作业的工作时间。我有一个工作模式,可以保存工作数据,以及它是否正在“开启”。

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

理想情况下,如果我可以在保存请求中捎带附加数据,这与如何在获取请求中发送额外数据相似,那将是非常好的。我只需要发送当前正在运行的作业的ID,因为这与模型无关,所以需要将一起发送,而不是其中的一部分。

有没有很好的方法来做到这一点?我想我可以找到一种方法来保持对当前作业服务器端的引用(如果需要的话):\

回答

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); 
}); 
... 
+2

它指出,虽然这确实发送额外的非模型数据,便会集模型上的数据,然后成为重要的模型数据。就像我的情况一样,您可能不需要这个,只是想在请求中发送1或2个额外的参数,而不是用于模型。您需要'this.model.unset('foo',{silent:true})'然后删除额外的属性 – 2013-12-30 11:29:05

+0

@ryanmarc但是这样做发送附加数据的工作,但这不是一个好的方法发送数据与模型。 – 2014-10-27 15:27:58

+2

@RobinsGupta而不是评论2年以上的答案是不正确的,为什么不添加更新的答案是?骨干在2012年的状况与今天截然不同。 – ryanmarc 2014-11-21 19:05:58

相关问题