流星:倒数计时器

时间:2016-02-28 22:58:12

标签: meteor

这可能是一个很大的问题,但我完全陷入困境,所以感谢任何帮助。

我正在尝试创建一个从周日到周日运行的倒数计时器,并在本周末重启。我尝试在大气中使用倒计时包,但文档有限,似乎永远不会起作用。我也尝试下载并运行第三方jquery包,但它们似乎总是崩溃流星。

有人能指出我正确的方向还是告诉我如何在流星中做到这一点?

具体细节:

  • 用于进行拍卖的倒数计时器。
  • 拍卖会为期7天,周日开始时间为凌晨12:00,为期7天 后面。
  • 拍卖会重置并在7天后重新开始。
  • 用户可以在多个页面上看到倒数计时器。
  • 要显示的倒数计时器单位 - 天,小时,分钟,秒(例如 6天,3小时,55分钟,22秒,直到下一次拍卖 开始。)

1 个答案:

答案 0 :(得分:1)

问题太大了。但我可以建议一个小步骤来解决这个问题。您的拍卖方案需要endDateTime来存储该值(即使它将在星期日开始/结束)。在模板上,您需要显示计时器,将一个ReactiveVar设置为数字(倒计时),将一个ReactiveVar设置为字符串(以显示结果)

Template['countDownTemplate'].created = function() {
    var due, dueDate, duration, now, num, self;
    self = this;

    dueDate = Template.instance().data['auction']['endDateTime'];
    now = moment.utc();

    due = moment.utc(dueDate, 'YYYY-MM-DD hh:mm:ss');

    duration = moment.duration(due.diff(now));
    num = Math.floor(duration.asSeconds());

    if (num >= 0) {
        self['remaining'] = new ReactiveVar<number>(num);
        self['timeRemaining'] =  new ReactiveVar<string>(convertPeriod(num));
        self['interval'] = Meteor.setInterval((function() {
            var remaining;
            remaining = self['remaining'].get();
            self['remaining'].set(remaining - 1);
            self['timeRemaining'].set(convertPeriod(self['remaining'].get()));
            if (remaining === 0) {
                Meteor.clearInterval(self['interval']);
            } else {
                remaining = Math.floor(moment.duration(due.diff(now)).asSeconds());
            }
        }), 1000);
    }
};

convertPeriod将基于remaining号码转换为正确的格式)

剩下的就是用timeRemaining

以正确的格式显示convertPeriod