我是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});
},
答案 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函数。