РЕДАКТИРОВАТЬ: я думаю, что должен сделать вещи более очевидными.
Я пытаюсь сделать так, чтобы функция, отображающая «время назад» с даты отправки сообщения, автоматически обновлялась каждую минуту, чтобы оно оставалось относительно точен, даже если шаблон не обрабатывается повторно.
Я хотел бы автоматически обновить свое значение timeago в моем шаблоне, но оно не работает.
Я попытался настроить свой код с реактивной функцией, основываясь на ответе на аналогичный вопрос (https://stackoverflow.com/a/17933506)
Вот мой код:
var timeAgoDep = new Deps.Dependency(); // !!!
var timeAgo;
var timeAgoInterval;
Template.postItem.created = function() {
function getTimeago() {
//var now = new Date();
timeAgo = moment(this.submitted).twitter();
timeAgoDep.changed(); // !!!
};
getTimeago(); /* Call it once so that we'll have an initial value */
timeAgoInterval = Meteor.setInterval(getTimeago, 5000);
};
Template.postItem.posted = function() {
timeAgoDep.depend(); // !!!
return timeAgo;
};
Template.postItem.destroyed = function() {
Meteor.clearInterval(timeAgoInterval);
};
Я почти уверен, что проблема связана с this.submitted, потому что, например, если я назначу timeAgo = now, он будет отображать время и обновлять, как и предполагалось.
Я также знаю, что moment (this.submitted) .twitter () отлично работает, потому что, когда все, что я делаю, это возвращаю его через помощника, он работает.