集合提取返回一个模型,但响应具有所有模型

时间:2014-04-25 23:47:15

标签: backbone.js

我是Backbone的新手,在获取集合时,我可以看到服务器返回所有15个集合。获取成功返回响应对象中的所有15个模型,但集合对象仅包含15个模型中的最后一个。

var BracketModel = Backbone.Model.extend({
  defaults: {
    id: '',
     name: '',
     title: ''
  },
  urlRoot: 'http://test.com/bracket/rest.php',
  .....
  }),

var BracketsCollection = Backbone.Collection.extend({
    url: 'http://test.com/bracket/rest.php?op=list',
    model: BracketModel,
}),

bracketCollection.fetch({
  success: function (collection, response) {
    // Collection.models only has one model, response has 15
    var bracketsView = new BracketsView({collection: collection});
},

2 个答案:

答案 0 :(得分:0)

尝试

var bracketsView = new BracketsView({collection: response}); 

var bracketsView = new BracketsView({collection: collection.toJSON()}); 

我现在还没有测试过,但如果我记得很清楚,两者都是等价的 第一个参数返回集合对象,使您可以访问不同的集合属性。第二个参数返回一个数组,其中包含集合中每个模型的属性哈希值,这可能是您正在寻找的东西。

答案 1 :(得分:0)

我通常用于将集合传递给视图的模式如下:

var bracketCollection = new BracketsCollection();
var view = new brackatsView({collection: bracketCollection});
brackCollection.fetch();

然后在视图的初始化方法中执行以下操作:

this.listenTo(this.collection, 'sync', this.render);

这一切都是创建您的集合和您的视图,然后在您创建视图时,您将告诉它有关该集合的信息。在集合上调用fetch是一个异步事件,它将触发同步'即使它完成了。视图将侦听此同步事件,当它发生时将调用render函数。