我正在试验meteor,我正面临一些代码结构问题。 我想要的是什么: 我使用观察者来跟踪在集合上添加的新文档,但我希望仅在模板完全呈现后才能“通知”。
在我的router.js文件中,我有:
HospitalListController = RouteController.extend({
action: function() {
Meteor.subscribe('hospitals');
this.render('listHospitals');
}
});
我的客户listHospital.js文件是
Template.listHospitals.onRendered(function(){
var first = true;
hospitalsCursor = Hospitals.find();
var totals = hospitalsCursor.count();
var loaded = 0;
HospitalsHandle = hospitalsCursor.observeChanges({
added : function(doc){
if( loaded != totals ){
loaded++;
}else{
console.log("added "+doc);
}
}
});
});
有没有更好的方法,也许是一种'流星'来实现这一目标?
答案 0 :(得分:0)
您必须在初始化期间添加一个标志以忽略observeChange回调(找到此解决方案here)。
Template.listHospitals.onRendered(function(){
var initialized = false;
hospitalsCursor = Hospitals.find();
HospitalsHandle = hospitalsCursor.observeChanges({
added : function(doc){
if(initialized) {
// your logic
}
}
});
initialized = true;
});
这应该有用。
答案 1 :(得分:0)
我的实际工作代码:
Template.queueView.onRendered(function(){
var initialLoaded = false;
Queues.find().observeChanges({
added : function(id, doc){
if( initialLoaded ){
console.log("added "+id);
highlight();
beep();
}
},
removed : function(id, doc){
console.log("removed "+id);
highlight();
beep();
},
changed : function(){
console.log('modified!');
highlight();
beep();
}
});
Meteor.subscribe('queues', function(){
initialLoaded = true;
});
});