Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用backbone.js在保存请求中发送额外的非模型数据?_Javascript_Rest_Backbone.js - Fatal编程技术网

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

Javascript 使用backbone.js在保存请求中发送额外的非模型数据?,javascript,rest,backbone.js,Javascript,Rest,Backbone.js,我正在寻找一种解决方案,使用backbone.js处理模型之间的状态问题 我有一个时间跟踪应用程序,用户可以启动/停止作业,它会记录作业的工作时间。我有一个工作模型,它保存了工作的数据以及当前是否“打开” 一次只能处理一个作业。因此,如果用户启动作业,则必须停止当前正在运行的作业。我想知道最好的解决办法是什么。我的意思是,我可以简单地相应地切换每个作业的“on”参数,然后在每个作业上调用save,但这会导致向服务器发出两个请求,每个请求都包含每个作业的完整表示 理想情况下,如果我能在save请求

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

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

一次只能处理一个作业。因此,如果用户启动作业,则必须停止当前正在运行的作业。我想知道最好的解决办法是什么。我的意思是,我可以简单地相应地切换每个作业的“on”参数,然后在每个作业上调用save,但这会导致向服务器发出两个请求,每个请求都包含每个作业的完整表示

理想情况下,如果我能在save请求中携带额外的数据,就像在fetch请求中发送额外数据一样,那就太好了。我只需要发送当前正在运行的作业的id,因为这实际上与模型无关,所以它需要与模型一起发送,而不是模型的一部分


有什么好办法吗?如果需要,我想我可以找到一种方法来维护对当前作业服务器端的引用:\

当调用save函数时,第一个参数是要保存的数据的对象。不要只调用
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);
});
...

需要注意的是,虽然这会发送额外的非模型数据,但它会在模型上设置数据,然后成为模型数据。就像在我的例子中一样,您可能不希望这样,只希望在请求中发送1或2个不适用于模型的额外参数。您需要
this.model.unset('foo',{silent:true})
然后删除附加的properties@ryanmarc但是,这可以发送额外的数据,但这不是一种用模型发送数据的好方法。@RobinsGupta没有评论2年以上的答案是不正确的,为什么不添加一个更新的答案呢?2012年,主干网的状态与今天大不相同。