什么是“;d”;当我们控制台.log()一个Backbone.js集合时,在Google Chrome中
What is the "d" in Google Chrome when we console.log() a Backbone.js Collection?
每当我控制台.log()一个Backbone.js集合时,谷歌Chrome的控制台就会显示字母"d",这与Safari或Firefox中典型的"Object"日志条目不同。有区别吗?
此外,每当我console.log()集合中的任何子项(例如,console.log(exampleCollection.models))时,我都会得到一个空数组。我做错什么了吗?
代码:
(function($) {
var Item = Backbone.Model.extend({
defaults: {
"sku":"",
"brand":"",
"model":"",
"picture":"placeholder.jpg"
},
url: function() {
return this.id ? 'products/' + this.id : 'products';
}
});
var Items = Backbone.Collection.extend({
model: Item,
url: "products"
});
var items = new Items;
items.fetch();
console.log(items); // shows "d" in Google Chrome along with typical
// object-like drop-down options
console.log(items.models); // shows "[]" empty array in console
})(jQuery);
我还是Backbone的新手,但我认为Jon Saw是对的。Backbone的所有模型、集合和视图都显示为d,并且在缩小的代码中到处都是。如果你看到d,这是一个很好的迹象,你可以像骨干对象一样操纵它。
至于空数组,我怀疑您的服务器端代码没有正确返回集合。你能举一个例子说明你是如何处理这个请求的,以及你要发回什么吗?
我记得我遇到过类似的问题,解决方案是确保它返回了漂亮的json数据,并且内容类型是application/json。但我的记忆是模糊的。
编辑:您可能想使用fetch()可用的成功和错误回调,以了解更多情况。
编辑2:这篇过去的文章可能与您的问题有关-使用Backbone 将数据从服务器获取
第3版:我发布了一个完整的主干示例,创建模型,将它们添加到集合,从服务器以集合的形式获取额外的模型,并将它们添加至现有集合(而不是重置)。它有混合的观点和子观点,但有些方面似乎与这个问题相似,所以我包括参考文献:
跟踪收集的旧部分和新部分
相关文章:
- 如何使用backbone.js从集合中获取模型名称
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- Meteor:插入集合后如何执行JS
- fabric js多边形集合坐标
- Backbone.js批量更新集合
- 根据屏幕大小显示主干.js集合的子集
- Meteor.js只更新一个参数,而不是整个集合
- 主干.js集合不迭代
- backbone.js可以't传递集合中的模型项's查看项目's视图
- 如何将会话数据从集合传递到视图?(Backbone JS/Coffeescapept)
- 将多级 mongodb 文档转换为 Backbone.js 模型/集合
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 主干.js将 url 参数传递给集合
- 流星.js按字段中的值筛选集合
- 骨干.js集合筛选前 10 个模型
- 骨干.js具有多种排序的集合
- 主干.js绑定到集合“添加”呈现视图两次
- 使用主干获取集合.js但未设置每个模型的 id
- 在节点中使用计数器集合.js递增 ID 字段
- 如何在主干中转换具有子集合的集合.js