このMeteorクライアントコードでは、ボタンをクリックするとプログレスバーアニメーションが表示されます。問題は、アニメーションコードがprogress要素を使用しようとしたときに、progress要素がnullであることです。ヘルパー条件のためテンプレートの文書要素がヌル
どのように修正できますか? THX
Template.registerHelper('session', (value) => {
return Session.get(value);
})
Template.footer.events({
'click button[data-action=carSearch]': function (e) {
e.preventDefault();
clickInfo();
}
});
'clickInfo': function() {
Session.set('inProgress', true); // makes the element visiable
progressBarStart(); // start the animation
}
'progressBarStart': function() {
let bar = document.getElementById('bar'); //<-- bar is always null
if (bar.value < 70) {
setTimeout(lib.progressBarStart(), 1000); controls the speed
bar.value += 1;
}
}
<template name="nameSearch">
<div id="nameSearch">
<p id="result" data-id={{_id}}>
{{{display.result}}} <br>
{{#if (session 'inProgress')}}
<progress id="bar" value="0" max="70"></progress>
{{/if}}
</p>
</div>
</template>
あなたはセッションを使用しないでください。 reactive-varsを使用してください。 –
セッションを使用しない理由はありません。正直なところ、私たちは著者の要件を知らず、おそらく彼は別のテンプレートでこの変数を使用したいと思っているので、彼はセッションを使用しています。 – Styx