如何将Backbone Collection包装到JSON对象中?

时间:2012-06-20 16:50:49

标签: jquery json backbone.js

我已经扩展了Backbone Collection类以包含一个“save”方法,该方法本质上是一个同步的代理。每当执行“保存”时,就会将一组对象提交给后端。但是,后端目前没有结构化来处理直接集合,它期望对象。有没有人对如何在对象中“包装”这个集合有任何建议?

我试过了:

var objectCollection = {};
objectCollection['key'] = backboneCollection.models;

但是上面的结果是“模型没有toJSON方法”错误 - 因为我只是代理同步。感谢。

1 个答案:

答案 0 :(得分:3)

要为Backbone.sync提供自定义格式,您必须将数据作为JSON字符串传递并提供正确的contentType。像这样:

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);
    }
});

和小提琴http://jsfiddle.net/xx4pr/(检查您的控制台以查看请求)