我想在我的模板中实现一个帮助器,它将显示自特定时间戳以来的时间。
Template.postItem.helpers({
timeSinceString: function(timestamp) {
return moment(timestamp).fromNow();
}
});
加载时工作正常,但除非重新加载模板,否则不会更新。这是可以理解的,因为没有跟踪fromNow()
函数。如何确保用户看到的内容保持最新状态?
一些例子:
答案 0 :(得分:1)
我发现这个包非常简单:https://atmospherejs.com/copleykj/livestamp
答案 1 :(得分:1)
我使用mizzao:timesync
包(我写的)与moment.js结合使用来生成这些特定的字符串。
mizzao:timesync
非常有用,因为它允许您通过计算NTP样式的偏移量在客户端上使用服务器时间,因此即使客户端时间错误,时间也是准确的。它还可以有效地将反应计时器组合在一起,以更新屏幕上的所有时间戳。
答案 2 :(得分: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));
}
});
答案 3 :(得分:0)
remcoder:chronos包提供了一种非常有用的方法来完成此操作。它定义了一个自我更新的反应时间变量。
注意:默认更新间隔为一秒。我发现在实践中,当显示许多时间变量时,这可能会导致严重的cpu周期。对于快速变化的事物(如文件上传进度表),我使用一秒钟。对于速度较慢的东西,我用了20分钟。