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

此刻即時通訊使用此代碼顯示時間。 但我一直試圖使用簡單的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(); 

回答

5

之所以方法不起作用,因爲它不是一個反應性數據源。

請嘗試以下操作。

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

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

查看的DEP文檔

「流星有一個簡單的依賴性跟蹤系統,它允許 自動重新運行模板和其他計算每當會議 變量,數據庫查詢,以及其他數據源改變「。

+0

工作太棒了,謝謝。我一直期待事情比他們需要的更困難:) – Sanctus