我想在Session.set("quizStarted", true);
之后将输入框放在模板中
Template.quiz.startQuiz = function(){
return Session.get("quizStarted");
}
startQuizAnimate = function(){
Session.set("quizStarted", true);
$('.answerBox').focus(); //THIS LINE DOES NOT FOCUS
}
Template.quiz.events({
'click #startQuiz' : function(){
startQuizAnimate();
}
}
<template name="quiz">
<button id="startQuiz">Start!</button>
{{#if startQuiz}}
<form class="answer">
// I want to focus this input text
<input type="text" class="answerBox" name="text" placeholder="Type your answer here" />
</form>
{{/if}}
</div>
</template>
{{#if startQuiz}}
中的块包含我要关注的输入,但是我必须在Session.set("quizStarted", true);
完成渲染后调用它。我该如何用流星的最佳做法写这篇文章? 最佳答案
一旦当前无效的每个计算都重新运行,请使用Tracker.afterFlush
注册要运行的自定义代码,尤其是负责重新渲染模板的反应性模板计算,并在{{#if startQuiz}}
变为真实后插入表格标记。
function startQuizAnimate(){
Session.set("quizStarted", true);
Tracker.afterFlush(function(){
$('.answerBox').focus();
});
}
关于javascript - meteor 在Session.set之后触发一个事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31507761/