Jquery 如何将主干集合包装到JSON对象中?
我已经扩展了主干集合类,以包含一个“save”方法,它本质上是一个要同步的代理。无论何时执行“保存”,都会向后端提交一个对象数组。但是,后端当前的结构不能处理直接的集合,它需要对象。有人对如何将此集合“包装”到对象中有什么建议吗 我试过:Jquery 如何将主干集合包装到JSON对象中?,jquery,json,backbone.js,Jquery,Json,Backbone.js,我已经扩展了主干集合类,以包含一个“save”方法,它本质上是一个要同步的代理。无论何时执行“保存”,都会向后端提交一个对象数组。但是,后端当前的结构不能处理直接的集合,它需要对象。有人对如何将此集合“包装”到对象中有什么建议吗 我试过: var objectCollection = {}; objectCollection['key'] = backboneCollection.models; 但是上面的结果是“model没有toJSON方法”错误——因为我只是代理sync。谢谢。要为主干.
var objectCollection = {};
objectCollection['key'] = backboneCollection.models;
但是上面的结果是“model没有toJSON方法”错误——因为我只是代理sync。谢谢。要为
主干.sync
提供自定义格式,您必须将数据作为JSON字符串传递,并提供正确的内容类型。大概是这样的:
var M=Backbone.Collection.extend({
url: '/echo/json/',
save: function() {
var data={}, opts= {};
data.key=this.toJSON();
opts.contentType = 'application/json';
opts.data = JSON.stringify(data);
Backbone.sync.call(this,'update',this, opts);
}
});
还有一个Fiddle(检查控制台以查看请求)虽然您可以使用JSON.org中的JSON对象(它有一个stringify方法),但这仍然无法实现。这是因为根据定义,JSON不能表示函数,我假设backboneCollection.models
将包含函数,对吗?感谢示例/fiddle,它对理解该方法非常有帮助。我不知道sync在options参数中接受并处理数据——我认为它只需要成功和错误回调。