我让Meteor.setInterval在我的集合中找到一个最近的项目,然后每隔1秒在一个会话中设置它。
Meteor.setInterval(function() {
var entries = Database.findOne({}, { sort: { date: -1} });
Session.set('entryName', entries);
}, 1200);
我需要这个,因为它只获取最新的条目,并防止其他条目泛滥,因为它只会每秒触发一次。有没有动画这个(让我们说添加淡入淡出效果)?这是一个问题,因为如果我对区间进行动画处理,即使没有添加新条目,它也会每秒淡入淡出。
我只需要在条目更改时才需要淡出。是否有更好的方法以Meteor方式重写代码,以便更容易制作动画?
答案 0 :(得分:0)
确实,您需要在此使用observeChanges
而不是计时器。 Meteor已经监控您的集合的更改,并在发生这种情况时触发observeChanges
事件。这可能是你想要的:
var throttled = _.throttle(function(){
Session.set('entryName', fields);
// do your animations here
},1000);
Database.find({}, {sort: {date: -1}, limit: 1}).observeChanges({
added: function(id, fields) { throttled() };
}
});
答案 1 :(得分:-1)
这就是我所做的,非常有趣的方式:
Database.find({}, {sort: {date: -1}, limit: 1}).observeChanges({
addedBefore: function(id, fields) {
var isItOn = true
Session.set('isItTrue', isItOn);
}
});
然后在下面:
Meteor.setInterval(function() {
var isItOn = Session.get('isItTrue');
if (isItOn === true) {
// Place Animation Here
var entries = Database.findOne({}, { sort: { date: -1} });
Session.set('entryName', entries);
var isItOn = false;
Session.set('isItTrue', isItOn);
}
}, 1200);
另请注意,我在使用“添加”时收到错误,必须使用' addedBefore'。