Javascript 主干网使用emulatejson,无需获取模型作为参数
我有一个模型,它是一种当用户点击按钮时发生的“动作”,用于设置和删除事件。事件本身是另一个模型和另一个集合,因此从技术上讲,我可以将此请求发送到API,而不必将其作为模型,因为在事件列表发生更改时,我可以独立更新事件列表。无论如何,这并不能解决我向服务器发送数据的问题 我的主要问题: 当我使用emulateJSON=true确保POST作为应用程序/x-www-form-urlencoded类型发送时,我的所有数据都包装在一个模型参数中,如下所示:Javascript 主干网使用emulatejson,无需获取模型作为参数,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我有一个模型,它是一种当用户点击按钮时发生的“动作”,用于设置和删除事件。事件本身是另一个模型和另一个集合,因此从技术上讲,我可以将此请求发送到API,而不必将其作为模型,因为在事件列表发生更改时,我可以独立更新事件列表。无论如何,这并不能解决我向服务器发送数据的问题 我的主要问题: 当我使用emulateJSON=true确保POST作为应用程序/x-www-form-urlencoded类型发送时,我的所有数据都包装在一个模型参数中,如下所示: model:{ "eventid":"
model:{
"eventid":"3",
"eventuniqueid":"abasdfasfafd",
"type":"Birthday",
"name":"Add"}
我想要的是将它们作为表单参数,如下所示:
eventid:"3",
eventuniqueid:"abasdfasfafd",
type:"Birthday",
name:"Add"
这容易吗?容易吗?不可以。您必须重新定义的行为(该函数在Backbone.sync中定义)。没有参数允许您自定义它 您必须更改该部分:
// For older servers, emulate JSON by encoding the request into an HTML-form.
if (options.emulateJSON) {
params.contentType = 'application/x-www-form-urlencoded';
params.data = params.data ? {model: params.data} : {};
}
通过删除我想说的最后一行,params.data就在前面定义:
if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
params.contentType = 'application/json';
params.data = JSON.stringify(options.attrs || model.toJSON(options));
}
编辑:事实上,通过在保存时以您喜欢的方式传递数据,您应该很好(您将拥有数据和主干的模型参数)
哇,很简单。我试过类似的方法,但可能用错了括号。谢谢。
myModel.save({}, {data: myModel.toJSON()});