setInterval()数据库检查的替代方法 - > Meteor.js

时间:2015-11-18 20:31:35

标签: javascript jquery meteor meteor-blaze

这个想法非常简单我需要在更改记录数量或将新消息插入doc(同样的事情)时进行向下滚动消息提要。

当前实现使用set interval来继续检查db更改:

1
0

这很好用,但我讨厌使用setInterval()的想法。 尝试使用Template.my_template.onRendered执行此操作,但这将在每个呈现的模板上执行一个函数,这意味着如果我在启动时渲染了50条消息,它将自动滚动50次而没有太多用途。

你们可以在不使用setInterval的情况下考虑更好的CLEAN解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以在onRendered回调中使用autorun

Template.messenger.onRendered(function() {
  this.autorun(function() {
    if (Messages.find().count())
      Template.messenger.methods.scrollDown();
  });
});

由于计数是被动的,autorun每次发生变化时都会触发。尝试添加并删除scrollOnNewMessages中的onCreated及其引用。