使用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内的倒计时钟仍然相同... –