Backbone.Models:如何使用嵌入式集合进行深入的jSON序列化?

Ste*_*fan 5 javascript backbone.js

我有一个包含集合的Backbone模型:

var Stream =  Backbone.Model.extend({
    defaults: {
        dummyField: "1",
        excludedUsers: new Backbone.Collection()
    }
});

var s = new Stream;
s.get('excludedUsers').add( {name:'Stefan'} );
console.log(s.toJSON())
Run Code Online (Sandbox Code Playgroud)

收益率:

{ dummyField: '1',
  excludedUsers: 
   { length: 1,
     models: [ [Object] ],
     _byId: {},
     _byCid: { c1: [Object] } } }
Run Code Online (Sandbox Code Playgroud)

而不是"预期":

 { 
      dummyField: '1',
      excludedUsers: [ {name:'Stefan'} ]
 }
Run Code Online (Sandbox Code Playgroud)

因为Backbone没有深入JSONing模型.解决方法的唯一方法是在Stream的原型上覆盖toJSON方法,但这对其他情况没有帮助.是否有一般/更好的解决方案(除了沉重的Backbone.Relational插件)?

neb*_*irl 0

您可能想Backbone.Collection.toJSON()直接覆盖该函数或创建一个新集合,将所有其他集合扩展到其中:

var MyDefaultCollection = Backbone.Collection.extend({
    toJSON: function() {
        //Your code here
    }
});
var Stream = Backbone.Model.extend({
    defaults: {
        dummyField: "1",
        excludedUsers: new MyDefaultCollection()
    }
});
//You could also extend it
var NewCollection = MyDefaultCollection.extend({
    //custom code here
});
Run Code Online (Sandbox Code Playgroud)

这只是理论,我从未编写过代码,所以欢迎对我的想法提供任何反馈:)