我是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启动视图时,它会失败。
任何专家都可以指出我正确的方向吗?
答案 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
调用,因此您可能不需要它。