打印出集合和集合.模型给出了不同的结果
Backbone.js - printing out the collection and collection.models give different results
在我的Backbone集合中有一个fetch,如下所示。
var Items = Backbone.Collection.extend({
get_items:function(data) {
this.fetch({
data:data,
success:function() {
console.log(items);
}
});
});
}
var items = new Items();
items.get_items({id:1});
items.get_items({id:2});
在每个console.log语句中,我希望集合的内容是不同的,因为我给出了不同的参数。但是在Chrome中,无论我给出什么"id"值,集合的内容都不会改变。
但是,如果我这样做
var Items = Backbone.Collection.extend({
get_items:function(data) {
this.fetch({
data:data,
success:function() {
console.log(items.models);
}
});
});
}
var items = new Items();
items.get_items({id:1});
items.get_items({id:2});
,我特别打印出"项目"。,我可以看到集合中的模型列表确实被更改了。
这是怎么回事?
您在这里描述了两种不同的场景:集合不仅仅是一个模型数组。它有很多东西附着在上面。集合的"models"属性是所有数据所在的地方。只有这才是真理的绝对来源——其他任何东西要么是撒谎,要么是做了不该做的事。
编辑:另外,为什么不用"items"代替"this"呢?即this.models吗?毕竟,如果您想知道正在使用的集合内部是什么,那么必须引用全局变量有点愚蠢:)(而且是相当糟糕的做法)。
编辑# 2:此外,除非另有指定,否则'fetch'是异步的。如果你想要得到一个一致的,可重复的结果,在一行中做两次取回是不会得到它的。如果其中一个请求由于某种原因比另一个请求慢一毫秒,那么你的结果无论如何都会混乱。
相关文章:
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 如何在集合中的项上触发 jQuery 事件(意外的 jQuery 结果来自 $._data() 与集合的第一个元素)
- 查找主干集合上的位置仅返回一个结果
- 如何访问主干集合的提取结果
- 在集合的空结果集上触发“重置”主干事件
- 使用 Node.jS 驱动程序在 MongoDB 中迭代多个集合并比较结果
- 在返回 1 结果时过滤主干集合
- 主干并循环访问集合,但结果未追加到 $(this.el)
- 结果:TypeError:Object[Object Object]没有方法'集合'尝试编辑分析对象时
- 从单个集合发布和订阅时没有搜索结果
- 打印出集合和集合.模型给出了不同的结果
- 用实例方法的结果填充集合中每个项目的属性
- MongoDB:我如何在同一数据库中搜索多个集合并返回混合结果集
- React internet explorer 11渲染映射到一个不可变集合错误的结果
- NodeJs:用另一个集合的结果过滤mongo查询结果
- 如何在Meteor JS中连接(或联合)来自两个mongodb集合的find()结果
- 如何仅在加载初始结果集后接收Meteor集合回调
- Mongojs从两个集合中提取数据并合并结果
- Meteor Wrapasync服务器端保存api调用结果到集合
- 问题在创建另一个集合从一个mongodb查询的结果在节点