1

我正在尝试创建一个计时器,我的 javascript 文件是:

function timer(){
  var date = new Date();
  Template.pomodoro.timer = function() { return date};
  Template.pomodoro.message = function() { return "test message"};

} 


if (Meteor.isClient) {
      Meteor.setInterval( timer(), 1000 );
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup

  });
}

我想将相同的计时器(计算服务器端)推送到所有浏览器,以使它们同步。

模板只更新第一次,为什么不是每秒更新一次?

谢谢弗朗西斯科

4

2 回答 2

4

这是对我有用的关于客户端的方法。我发现将服务器时间推送到客户端是最容易实现的,方法是将当前时间放入集合中并在客户端上简单地使用该值。

if (Meteor.isClient) {
    Template.pomodoro.timer= function () {
        return Session.get("dateval");
    };
    Template.pomodoro.message= function () {
        return "My Message";
    };

    Meteor.setInterval( function () {
        Session.set("dateval",Date());
        console.log(Session.get("dateval")); 
    }, 1000 );
}
于 2013-04-17T09:16:22.467 回答
2

尝试:

if (Meteor.isClient) {
      Meteor.setInterval( function(){timer()}, 1000 );
}

或者:

if (Meteor.isClient) {
      Meteor.setInterval( timer, 1000 );
}

这是因为 setInterval 的第一个参数必须是函数指针,而您正在使用()这意味着您正在执行函数而不是传递它。

于 2013-04-17T08:40:10.790 回答