0

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

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

4

1 回答 1

0

来自精美手册

解析 collection.parse(response, options)

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

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

return response[0];

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

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

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

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

于 2013-03-06T02:55:50.707 回答