流星每秒重绘时钟

时间:2013-12-18 20:23:15

标签: meteor

  Template.display_time.time = function() {
    var date = new Date();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var now = addZero(hour) + ":" + addZero(minute);
    return now
  };

目前我正在使用此代码显示时间。 但我一直在尝试使用简单的javascript来每秒更新它,但它不会出现在页面上。 使用上述功能是否有流星友好的方式来做到这一点? 就像在1秒间隔使用setTimeout一样..

我以前使用的javascript。

function updateTime() {
    var currentTime = new Date();
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();
    if (hours < 10)
    {
        hours = "0" + hours;
    }
    if (minutes < 10)
    {
        minutes = "0" + minutes;
    }
    var v = hours + ":" + minutes + " ";
    setTimeout("updateTime()",1000);
    document.getElementById('time').innerHTML=v;
}
updateTime();

1 个答案:

答案 0 :(得分:5)

该方法不起作用的原因是因为它不是反应性数据源。

请尝试以下操作。

Template.display_time.time = function() {
    return Session.get('time');
};

Meteor.setInterval(function() {
    Session.set('time', getTime());
}, 1000);

请参阅Deps文档

  

“Meteor有一个简单的依赖跟踪系统,允许它   会话时自动重新运行模板和其他计算   变量,数据库查询和其他数据源都会发生变化。“