【问题标题】:How to Wrap Backbone Collection into JSON object?如何将主干集合包装到 JSON 对象中?
【发布时间】:2012-06-20 16:50:49
【问题描述】:

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

我试过了:

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

但上述结果导致“模型没有 toJSON 方法”错误——因为我只是代理同步。谢谢。

【问题讨论】:

  • 虽然您可以使用来自 json.org 的 JSON 对象(它有一个 stringify 方法),但这仍然无法让您到达那里。这是因为根据定义,JSON 不能表示函数,我假设 backboneCollection.models 将在其中包含函数,对吧?

标签: jquery json backbone.js


【解决方案1】:

要为 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/(检查您的控制台以查看请求)

【讨论】:

  • 感谢您的示例/小提琴,它对理解该方法非常有帮助。我不知道同步在选项参数中接受和处理数据——我认为它只需要成功和错误回调。
猜你喜欢
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
相关资源
最近更新 更多