我有一个模板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?
答案 0 :(得分:1)
您需要使用Meteor.clearInterval
明确清除setInterval
顺便说一下,你也不需要self.autorun()
,这里多余了。您可能还会发现remcoder:chronos包有用。