我怎样才能完成反应日期 [英] How can i accomplish reactive dates

查看:41
本文介绍了我怎样才能完成反应日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建消息列表,显示消息的发送时间.

I am creating list of messages that shows how long ago the message was sent.

这是我的消息集

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();

    }
});

我怎样才能让我的助手每分钟更新一次?现在除非我输入新消息或刷新页面,否则它不会响应.

How can i make it so that my helper updates each minute? Right now it is not reactive unless I enter a new message or refresh the page.

更新

Meteor-livestap 正是这样做的.

推荐答案

将您的助手更改为:

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"),并强制您的助手重新计算.这应该确保时间每分钟保持反应.

What this does is change Session.get("time") every minute, and forces your helper to recalculate. This should ensure the time stays reactive every minute.

这篇关于我怎样才能完成反应日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆