在Meteor中设置会话变量更改的动画?
我让Meteor.setInterval在我的收藏中查找一个最近的项目,然后每1秒在会话中设置一次在Meteor中设置会话变量更改的动画?,meteor,Meteor,我让Meteor.setInterval在我的收藏中查找一个最近的项目,然后每1秒在会话中设置一次 Meteor.setInterval(function() { var entries = Database.findOne({}, { sort: { date: -1} }); Session.set('entryName', entries); }, 1200); 我需要这个,因为它只获取最近的条目,并防止其他条目泛滥,因为它每秒只触发一次。是否有动画制作的方法,比如说添加淡入淡
Meteor.setInterval(function() {
var entries = Database.findOne({}, { sort: { date: -1} });
Session.set('entryName', entries);
}, 1200);
我需要这个,因为它只获取最近的条目,并防止其他条目泛滥,因为它每秒只触发一次。是否有动画制作的方法,比如说添加淡入淡出效果?这是一个问题,因为如果我按间隔设置动画,它将每秒淡入淡出,即使没有添加新条目
我需要它淡出只有当条目改变。是否有更好的方法以Meteor方式重写代码,使其更易于制作动画?确实,您希望在此处使用observeChanges而不是计时器。Meteor已经在监视您的收藏的更改,并将在发生更改时触发observeChanges事件。这可能是您想要的: var throttled=\ u0.throttlefunction{ 设置'entryName',字段; //在这里做你的动画 },1000; Database.find{},{sort:{date:-1},limit:1}.observeChanges{ 添加:functionid,字段{throttled}; } };
这就是我所做的,非常有趣的方式:
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);
另外请注意,我在使用“added”时收到了一个错误,必须先使用“addedBefore”。感谢Christian,我会尝试一下,唯一的问题是我不确定它是否考虑了洪水。数据库将被许多用户快速更新,所以我需要它每隔几秒钟只显示一个条目。我将尝试向会话添加间隔。获取maybe@LisaS我添加了一个限制更新速度的节流阀。@MichelFloyd我今天早些时候用了一种有趣的方法,效果很好。不确定哪一个更有效。我放置了一个变量,该变量将在每次观察到内部更改时设置为“true”。observeChanges并将其放置在session.set中。接下来我做了一个会话。获取Meteor.setInterval中的真相。我把它放在数据库的if语句中。findOne我会把它写下来below@MichelFloyd事实上,我尝试了节流方法,但它不起作用。它怎么不起作用?它没有设置变量还是没有减慢设置速度?