当前位置: 代码迷 >> JavaScript >> 在Session.set之后,Meteor会触发一个事件
  详细解决方案

在Session.set之后,Meteor会触发一个事件

热度:169   发布时间:2023-06-13 12:47:57.0

我想在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的最佳实践来写这个?

使用Tracker.afterFlush注册要在当前无效的每个计算重新运行后运行的自定义代码,特别是负责重新呈现模板并在{{#if startQuiz}}变得真实之后插入表单标记的反应模板计算。

function startQuizAnimate(){
  Session.set("quizStarted", true);
  Tracker.afterFlush(function(){
    $('.answerBox').focus();
  });
}
  相关解决方案