我应该如何确保`Template.autorun()`没有运行?

时间:2016-02-27 06:23:57

标签: javascript meteor

我有一个模板timeline,其中显示当前时间和从中生成的值。为此,我将reactiveVar附加到我的模板,然后在附加到同一模板的autorun中对其进行更新。

以下是它的外观:

Template.Timeline.created = function(){
  this.time = new ReactiveVar(moment(new Date().getTime()).format('dddd d MMMM YYYY - HH:mm:ss'));    
};
Template.Timeline.rendered = function(){
  var self = this;
  self.autorun(function(){
    Meteor.setInterval(function(){
      console.log("tick!");
      self.time.set(moment(new Date().getTime()).format('dddd d MMMM YYYY - HH:mm:ss'));
    }, 1000);
  });
};
Template.Timeline.destroyed = function(){
  console.log("template destroyed");
};

问题在于即使模板被销毁(不是同一条路线,也不再显示,我的console.log("template destroyed")已经显示),我无限期地得到了#34; tick"控制台日志,就像模板仍然呈现一样。

我显然错过了一些东西,而我却得不到什么。为什么我的setInterval仍然有效,如果其模板不是<?p?

1 个答案:

答案 0 :(得分:1)

您需要使用Meteor.clearInterval

明确清除setInterval

顺便说一下,你也不需要self.autorun(),这里多余了。您可能还会发现remcoder:chronos包有用。