我有页面上的项目列表,我想在集合中添加用于检测插入的侦听器。
以下代码位于客户端。
Messages.find().observeChanges({
added: function(){
console.log('Message added');
}
});
但是如果在集合中已存在项目,则在加载页面之后将触发所有项目的回调。为什么对已经收集的项目以及如何只检测真正的新插入项,为已添加的'已添加'进行了回调?
答案 0 :(得分:0)
有两种解决方案。对于第一个,请查看此处:https://github.com/oortcloud/unofficial-meteor-faq#why-does-observe-fire-a-bunch-of-added-events-for-existing-documents
第二个是:
var isInitial = true
Messages.find().observeChanges({
added: function(){
if(!isInitial){
console.log('Message added');
}
}
});
isInitial = false
这样做是因为对observeChanges
的调用会在返回之前触发Minimongo中已有文档的添加回调(并且isInitial
将设置为false
)。
答案 1 :(得分:0)
您可以尝试使用可以完全按照自己的意愿执行的集合挂钩:
https://atmospherejs.com/mrt/collection-hooks
不幸的是,此软件包尚未更新,无法与Meteor 0.9及更高版本配合使用。