2013-04-17 3 views
1

Я пытаюсь создать таймер, и я мой файла JavaScript является:метеор setInterval - обновление строки каждого второго

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 

    }); 
} 

Я хочу, чтобы нажать на весь браузер и тот же таймер (вычисленный на сторону сервера) для того, чтобы синхронизировать их.

шаблон обновляется только в первый раз, почему он не обновляется каждую секунду?

Благодаря Francesco

ответ

2

Try:

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

Или:

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

Это происходит потому, что первый аргумент setInterval должен быть указателем на функцию, и вы используете () Это означает, что вы выполняете g вместо передачи его.

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); 
} 
Смежные вопросы