2014-12-21 5 views
1

Я создаю список сообщений, которые показывают, как давно было отправлено сообщение.Как я могу выполнить реактивные даты

Screenshot

Это моя коллекция сообщений

Messages = new Mongo.Collection('messages'); 
Messages.attachSchema(new SimpleSchema({ 
    created: { 
     type: Date 
    }, 
    text: { 
     type: String 
    } 

})); 

это мой мой макет

{{#each messages}} 

      <li class="message"> 
        <span class="message-text">{{text}}</span> 
        <span class="message-date">{{timeAgo created}}</span> 
      </li> 

{{/each}} 

Это мой помощник

UI.registerHelper('timeAgo', function (context, options) { 
    if (context) { 
     return moment(context).fromNow(); 

    } 
}); 

Как я могу сделать так, чтобы мой помощник обновлялся каждую минуту? В настоящий момент это не реактивная информация, если я не введу новое сообщение или не обновляю страницу.

UPDATE

Meteor-livestap делает именно это.

+0

Возможный дубликат [Как периодически обновлять переменную с помощью метеорита] (http://stackoverflow.com/questions/27412743/how-to-periodically-update-a-variable-using-meteor) –

ответ

5

Изменить ваш помощник в этом:

Template.registerHelper('timeAgo', function (context, options) { 
    Session.get("time"); 
    if (context) { 
     return moment(context).fromNow(); 
    } 
}); 

Meteor.setInterval(function() { 
    Session.set("time", new Date().getTime()); 
}, 60000); 

Что это делает изменить Session.get("time") каждую минуту, и силы вашего помощника пересчитывать. Это должно гарантировать, что время остается реактивным каждую минуту.

+0

Спасибо. Действительно ценю это. Это дает мне способ выполнить задачу сейчас. Но опять же я чувствую, что это быстрое и грязное решение. я не знаю. делает работу. Спасибо! – MurWade

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