我想在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);
完成渲染后调用它。我怎样才能用Meteor的最佳实践来写这个?
答案 0 :(得分:3)
使用Tracker.afterFlush
注册要在当前无效的每个计算重新运行后运行的自定义代码,特别是负责重新呈现模板并在{{#if startQuiz}}
变为真实后插入表单标记的反应模板计算。
function startQuizAnimate(){
Session.set("quizStarted", true);
Tracker.afterFlush(function(){
$('.answerBox').focus();
});
}