2013-12-18 2 views
2
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 
    }; 

В настоящий момент im использует этот код для отображения времени. Но я пытаюсь использовать простой javascript для обновления его каждую секунду, но он не появится на странице. Есть ли способ для метеорита, чтобы сделать это, используя функцию выше? Как использовать setTimeout с интервалом в 1 секунду.Meteor redraw clock every second

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

ответ

5

Причина, по которой метод не работает, потому что это не является реакционноспособным источником данных.

Попробуйте следующее.

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

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

Смотрите документацию по DEPS

«Метеор имеет простую систему отслеживания зависимостей, которая позволяет его автоматически Rerun шаблонов и других вычислений, когда сессия переменные, запросы к базе данных, а также другие источники данных изменить «.

+0

Работает фантастически, спасибо. Я все время ожидаю, что все будет сложнее, чем нужно :) – Sanctus