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
Backbone.js 主干集合fetch()仅返回一条记录_Backbone.js - Fatal编程技术网

Backbone.js 主干集合fetch()仅返回一条记录

Backbone.js 主干集合fetch()仅返回一条记录,backbone.js,Backbone.js,当我试图从服务器获取对象列表时,集合接受第一条记录并忽略其余记录 来自服务器的响应类型为application/json [{"id":1,"name":"A"}, {"id":2,"name":"B"}, {"id":3,"name":"C"}] 在客户端 var collection = new Backbone.Collection; collection.url = 'url_to_the_resource'; collection.fetch(); conso

当我试图从服务器获取对象列表时,集合接受第一条记录并忽略其余记录

来自服务器的响应类型为
application/json

 [{"id":1,"name":"A"}, 
  {"id":2,"name":"B"}, 
  {"id":3,"name":"C"}]
在客户端

 var collection = new Backbone.Collection;
 collection.url = 'url_to_the_resource';

 collection.fetch();
 console.log( collection.toJSON());
输出是

 [{"id":1,"name":"A"}]
编辑

当收集准备就绪时,即异步调用完成后,我调用日志,如下所示:

collection.fetch().done( function() {
  console.log( collection.toJSON() );
});
还有一张唱片。我还检查了backbone.js源代码,在第
682行发现了以下内容

    // If a duplicate is found, prevent it from being added and
    // optionally merge it into the existing model.
    if (existing = this.get(model)) {

在那行之后添加了一个日志,发现主干合并了所有的模型,为什么呢?

我只能猜测。如果你能提供收集代码,那就太好了

  • 确保模型(如果被覆盖)是唯一的
  • 如果已重写集合
    parse
    方法,请检查该方法。它应该返回对象数组
  • 尝试玩
    添加
    删除
    合并
  • 我找到了原因

    这是因为我在模型原型上附加了一个事件

    Backbone.Model.prototype.on('request',function(model, xhr, options){ ... });
    

    最有可能是覆盖问题,
    甚至原始JSON数据的每条记录都完全不同


    模型中的Revoke属性或集合中的Revoke方法可能会有所帮助



    您可以使用
    .findWhere({u id:pkId})
    而不是
    .get(pkId)

    我用来获取的代码就是您上面看到的代码,这意味着除了url之外,我什么都没有更改。我甚至怀疑服务器发送了一个格式错误的json,并创建了一个静态json文件,并将集合url指向它。但仍然只有第一张唱片。谢谢你的回答。