2015-07-27 3 views
0

Я хочу реализовать помощник в моем шаблоне, который будет отображать время с определенной отметки времени.Как заставить Meteor активно обновлять строку «time since»?

Template.postItem.helpers({ 
    timeSinceString: function(timestamp) { 
    return moment(timestamp).fromNow(); 
    } 
}); 

Это нормально работает, когда оно загружается, но оно не обновляется, если шаблон не перезагружен. Это понятно, потому что функция fromNow() не отслеживается. Как я могу убедиться, что то, что видит пользователь, постоянно обновляется?

Некоторые примеры:

  • "5 часов назад"
  • "несколько секунд назад"
  • "1 день назад"
+1

Также см .: [Momentjs в метеорной реактивности?] (Http://stackoverflow.com/questions/25301149/momentjs-in-meteor-reactivity) – user3374348

ответ

0

нагрузки функция на визуализации, которая обновляет сеанс переменная:

Template.postItem.rendered(function() { 
    setInterval(function() { 
    Session.set('currentTime', moment()); 
    }, 1000); // Replace 1000 with your level of time detail 
}); 

Template.postItem.helpers({ 
    timeSinceString: function(timestamp) { 
    return Session.get('currentTime').from(moment(timestamp)); 
    } 
}); 
+0

По какой-то причине я не мог заставить это работать, но я нашел пакет, чтобы позаботиться об этом. Так что спасибо! – adrianmc

1

Я позабочусь об этом, используя пакет mizzao:timesync (который я написал) в сочетании с moment.js, который генерирует эти конкретные строки.

mizzao:timesync очень полезно, так как это позволяет использовать время сервера на клиенте вычисления NTP-стиль смещения, поэтому времена точны, даже если время клиента неправильно. Он также эффективно объединяет реактивные таймеры для обновления всех временных меток на экране.

Примером является частью mizzao:user-status демо: http://user-status.meteor.com/

0

Пакет remcoder:chronos обеспечивает очень полезный способ сделать именно это. Он определяет переменную времени реакции, которая обновляет себя.

Примечание: интервал обновления по умолчанию составляет одну секунду. Я обнаружил, что на практике это может привести к серьезным циклам процессора, когда отображаются многие временные переменные. Для вещей, которые быстро меняются (например, индикатор выполнения загрузки файла), я использую одну секунду. Для медленных движущихся вещей я использую 20 минут.