2016-02-27 3 views
0

У меня есть шаблон timeline, где я отображаю текущее время и значения, полученные из него. Для этого я привязал к моему шаблону reactiveVar, и я обновляю его в autorun, прикрепленном к тому же шаблону.Как я должен убедиться, что `Template.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") был показан), я неопределенно получить «клещ «консольный журнал, как будто шаблон все еще отображается.

Я, очевидно, что-то пропустил, и я ничего не понимаю. Почему мой setInterval все еще активен, если его шаблон отсутствует?

+0

Вам необходимо явно очистить 'setInterval' с помощью [Meteor.clearInterval] (http://docs.meteor.com/#/full/meteor_clearinterval) –

ответ

1

Вам необходимо явно очистить setInterval с Meteor.clearInterval

Кстати, вам не нужен self.autorun() либо, это излишним здесь. Вы также можете найти полезный пакет remcoder:chronos.

Смежные вопросы