Backbone.js 主干提取触发成功,但返回零长度

Backbone.js 主干提取触发成功,但返回零长度,backbone.js,fetch,Backbone.js,Fetch,我是个新手。如果这个问题以前已经得到回答,请原谅。我试着用谷歌搜索,但找不到解决办法 window.InfoCollection = Backbone.Collection.extend({ model:InfoModel, url:"../api/info", parse: function (response) { console.log("In Parse" + response.length) return response;

我是个新手。如果这个问题以前已经得到回答,请原谅。我试着用谷歌搜索,但找不到解决办法

window.InfoCollection = Backbone.Collection.extend({
    model:InfoModel,
    url:"../api/info",
      parse: function (response) {
        console.log("In Parse" + response.length)
        return response;
    }
});
在这里,它将长度正确地返回为1

但是,它在这里显示为0

    this.InfoCollection.fetch({success:function(){console.log(this.length)}});
因此,当我使用InfoModel启动视图时,它失败了

任何专家都能为我指出正确的方向吗?

来自:

解析
集合。解析(响应、选项)

[…]函数被传递给原始
响应
对象,并且应该返回要添加到集合中的模型属性数组

显然,您在
response
中得到了预期的数组(长度为1),但是
parse
只返回第一个元素:

return response[0];
但是集合需要一个对象数组(每个模型一个对象),而不是一个对象。结果是,您最终得到一个空集合,因为您没有给它任何可以加载的内容;空集合的长度为零,这就是您看到的

您可能希望您的
parse
如下所示:

parse: function (response) {
    console.log("In Parse" + response.length)
    return response;
}

这只是默认的
parse
实现,带有
console.log
调用,因此您可能不需要全部调用。

很抱歉没有提及。不过,我还是先尝试了一下。一个Firebug向我显示了响应的子对象,所以我尝试只发送第一个子对象
Response
看起来像什么?它看起来像一个普通的数组对象。response[0][infoId]、response[0][firstvar]等如果在
parse
方法中
返回response
会发生什么情况?集合对象的名称和定义发生冲突。我将它重命名为this.infoColl=new InfoCollection(),它可以正常工作。谢谢你的编辑,科林