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