使用Final Countdown Plugin和Handlebars.js。模板內的車把和倒計時
兩個插件都很好,分開。下面<div>
會給我一個倒計時(這裏倒計時2017年1月1日):
<div id="getting-started"></div>
<script type="text/javascript">
$("#getting-started").countdown("2017/01/01", function(event) {
$(this).text(
event.strftime('%D days %H:%M:%S')
);
});
</script>
我有一個簡單的例子車把這裏:
<script type ="mustache/x.tmpl" id="helloTmpl">
{{#each this}}
{{endTime}}
{{/each}}
</script>
哪裏{{endTime}}
是結束時間,我想倒計時(而不是2017/01/01)。它在{{#each}}
循環內,並且會運行多個{{endTime}}
。
任何人都知道一個想法,使這成爲可能?併爲每個{{endTime}}
倒計時?我試圖將上面的倒計時插件放入幫手,但沒有成功,它變得有點混亂。提前致謝。
編輯:結果
感謝@ 76484。通過你的例子,我感到困惑,現在我可以使用我的設置,太棒了!我每3-5秒運行一次function populate()
以用新數據刷新我的模板。這意味着我也必須每3-5秒運行一次倒計數功能,即使endTime
數據沒有改變。我這樣做:
function populate()
{
var url = apiurl + 'api/myGreatData';
$.ajax
({
type: 'POST',
cache: false,
url: url,
dataType: 'json',
success: function (response)
{
var source = document.getElementById("helloTmpl").innerHTML;
var tmpl= Handlebars.compile(source);
var html = tmpl(response);
var box = document.getElementById("box");
box.innerHTML = html;
// Countdown Timer
$('[data-countdown]').each(function (index, el) {
var $el = $(el);
var finalDate = $el.attr('data-countdown');
$el.countdown(finalDate, function (event) {
$(this).text(event.strftime('%D days %H:%M:%S'));
});
});
}
})
}
出於某種原因,我覺得這將是即使倒數計時器可能是這個function populate()
與阿賈克斯之外更大的,但後來它不會因你的DOM的解釋工作。也許通過調用倒計時帶來的額外負擔也是微不足道的......
謝謝!我編輯了我的上面的問題 –
你每3到5秒鐘讀取哪些數據? – 76484
我只是呼應編碼的JSON。我有'{{登記參與者}}',如果某些用戶註冊了「遊覽」,則可以增加。每個用戶都需要動態查看此更改(或每隔3-5秒)。正如你所知道的,每個巡演都有'{{endTime}}',這對每次巡演都是一個常數。隨着時間的推移可以添加更多的遊覽,但是模板循環「{{each this}}」處理這個。在未來,如果在服務器上發生更改而不是刷新3-5秒,我將使ajax運行,但點與Ajax內的倒計時鐘仍然相同... –