Backbone Fetch触发成功但返回零长度

时间:2013-03-06 01:52:15

标签: backbone.js fetch

我是Backbone的新手。如果之前已经回答过,请原谅我。我尝试使用谷歌搜索,但无法达成解决方案。

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启动视图时,它会失败。

任何专家都可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

来自fine manual

  

解析 collection.parse(response, options)

     

[...]函数传递原始response对象,并应返回要添加到集合中的模型属性数组。

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

return response[0];

但是该集合期望对象数组(每个模型一个对象)而不是单个对象。结果是你最终得到一个空集合,因为你没有给它任何可以加载的东西;空集合的长度为零,这就是你所看到的。

您可能希望parse看起来像这样:

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

这只是默认的parse实现,并且会引发console.log调用,因此您可能不需要它。