从集合内部创建集合

时间:2014-01-10 00:35:23

标签: json backbone.js marionette

我有一个集合,在获取时会获得一个json并放入集合: JSON格式为:

[ 
  {
    name: 'Hello',
    age: '22',
    bio: [{
      interest: 'soccer',
      music: 'r&B'
    }]
  }
]

我想从bio制作另一个系列(不再提取)。 原因是我想访问name,age和bio,而解析函数只能返回一个?

var user = new Backbone.Collection.extend({
  url: '/user',

  parse: function (response) {
    //I want both of this?
    //return response;
    return response.bio;
  }
});

我将这个集合传递给fetch成功函数到两个不同的视图。

//Controller File....
.............

mycollection.fetch({
  success: function() {

    //Details View wants response
    PrimaryLayout.main.show(new detailsView{collection: mycoll});      

   //Bio View wants response.bio
    PrimaryLayout.body.show(new bioView{collection: mycoll}); 
  }
})

解决这个问题的最佳方法是什么?我可以克隆一个集合并且只有bio吗?

2 个答案:

答案 0 :(得分:1)

我通常通过在parse中实例化子集来解决这个问题:

var User = Backbone.Model.extend({
    parse: function(json) {
        // instantiate the collection
        json.bio = new Backbone.Collection(json.bio);
        // now person.get('bio') will return a Collection object
        return json;
    }
});

var Users = Backbone.Collection.extend({
    model: User,
    // ...
});

答案 1 :(得分:0)

我认为这正是您所寻找的:Backbone Associations。看看那里的教程和示例。