Final Countdown PluginとHandlebars.jsを使用しています。テンプレート内のハンドルバーとカウントダウン
両方のプラグインは素晴らしい、別々に動作します。 <div>
を以下は私のカウントダウン与えるだろう(2017年1月1日にここをカウントダウン):{{endTime}}
は、私が希望終了時間である
<script type ="mustache/x.tmpl" id="helloTmpl">
{{#each this}}
{{endTime}}
{{/each}}
</script>
:
<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>
は、私はここで簡単なハンドルの例を持っています(2017/01/01の代わりに)へのカウントダウン。これは{{#each}}
ループ内にあり、多くは{{endTime}}
を実行します。
これを可能にするアイデアは誰も知っていますか? {{endTime}}
ごとにカウントダウンしますか?私は上記のカウントダウンプラグインをヘルパーに入れようとしましたが、成功しておらず、ちょっと乱雑になりました。前もって感謝します。
EDIT:結果76484 @
感謝。あなたの例を困惑させることによって、私はセットアップでうまく動作するようになりました。新しいデータでテンプレートを更新するために、私はfunction populate()
を3〜5秒ごとに実行します。これで、endTime
のデータは変更されませんが、3〜5秒ごとにカウントダウン機能を実行する必要があることを意味します。私はカウントダウンタイマーは、Ajaxでこのfunction populate()
外であることができれば、さらに大きくなるだろうと感じ何らかの理由
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'));
});
});
}
})
}
、しかし、それは文句を言わないあなたのDOMの説明のために働く:私はこのように行います。おそらく、カウントダウンを呼び出すことによる余計な負担はあまりにも小さいです...
ありがとう!上記の質問を編集しました –
3-5秒ごとにどのデータをフェッチしていますか? – 76484
私はエンコードされたjsonをエコーしています。私は '{{enrolledParticipants}}'を持っています。これは、あるユーザが "ツアー"を登録すると増加します。すべてのユーザはこの変更を動的に(または3〜5seekごとに)見る必要があります。各ツアーにはあなたが知っている '{{endTime}}'があり、これは各ツアーの定数です。時間の経過と共にツアーを追加することができますが、テンプレートループ '{{each each}}'がこれを処理します。将来的には、3-5秒のリフレッシュではなくサーバー上で変更が発生した場合、ajaxを実行しますが、ポイントはAjax内のカウントダウンクロックと同じです... –