Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 集合获取返回一个模型,但响应包含所有模型_Backbone.js - Fatal编程技术网

Backbone.js 集合获取返回一个模型,但响应包含所有模型

Backbone.js 集合获取返回一个模型,但响应包含所有模型,backbone.js,Backbone.js,我是主干网新手,在获取集合时,我可以看到服务器返回所有15个集合。fetch success返回响应对象中的所有15个模型,但集合对象只有15个模型中的最后一个 var BracketModel = Backbone.Model.extend({ defaults: { id: '', name: '', title: '' }, urlRoot: 'http://test.com/bracket/rest.php', ..... }), var

我是主干网新手,在获取集合时,我可以看到服务器返回所有15个集合。fetch success返回响应对象中的所有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});
},
试一试

我现在还没有测试过,但如果我记得很清楚的话,两者都是等效的。

第一个参数返回集合对象,您可以通过该对象访问不同的集合属性。第二个参数返回“一个数组,其中包含集合中每个模型的属性哈希”,这可能就是您要查找的内容

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

var bracketCollection = new BracketsCollection();
var view = new brackatsView({collection: bracketCollection});
brackCollection.fetch();
然后在视图的初始化方法中执行以下操作:

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

这一切都是在创建集合和视图,然后在创建视图时告诉它集合的情况。对集合调用fetch是一个异步事件,即使在完成“同步”时也会触发该事件。视图将侦听此同步事件,发生时将调用渲染函数

谢谢,我试过了,但是这两个选项都没有将集合传递给视图,视图需要访问集合对象注意撇号。“Collection.models只有一个模型,response有15个”有点奇怪。JSON是否以正确的格式和内容类型发送到浏览器?谢谢。问题确实出在从服务器返回的JSON上。集合中所有模型的id字段均为空。当我纠正这一点时,一切都正常了。这就可以做到了,集合希望模型通过其
id
唯一地标识出来,所以它可能将模型视为一个模型的15个副本/版本。
var bracketCollection = new BracketsCollection();
var view = new brackatsView({collection: bracketCollection});
brackCollection.fetch();
this.listenTo(this.collection, 'sync', this.render);