Meteor 1.0.2.1 会话变量未设置

Meteor 1.0.2.1 session variable not staying set

在下面的代码中,当我单击按钮时,我希望 {{#if adding_answers}} 会话变量为 true。它触发 "click .setup_answers':function" 但模板 {{> newAnswers}} 永远不会显示,因为 {{#if adding_answers}} 它不是真的。我看到它通过 console.log 设置为 true 但它 returns 到 HTML 什么都没有。 我认为通过将其设置为 meteor reactive 会导致它被看到的值?

HTML代码

<template name="newQuestions">
    {{#if adding_answers}} <!-- Session Variable -->
        {{> newAnswers}}
    {{/if}}

        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">Questions</h3>
                <p></p>
                <form class="form-horizontal">
                    <div class="form-group">
                        <label class="sr-only" for="inputQuestion">Question</label>
                        <input type="textarea" class="form-control" name="inputQuestion"     id="inputQuestion" autofocus="1" placeholder="Enter New Question" rows="5">
                    </div>
                    <button type="button" class="setup_answers btn-primary">Setup Answers</button>
                </form>
            </div>
        </div>
</template>`

JS代码

`Template.newQuestions.events({
  "click .archive": function(event, template){
    return Meteor.call('archiveTodo',this._id,!this.archived);
  },
  'click .todochecked':function(event,template){
    return Meteor.call('completeTodo',this._id,!this.completed);
  },
  'click .setup_answers':function(event,template){
    var question = $('#inputQuestion').val(); // Question must be entered.
    if (question === "") {
      alert("The question can not be blank.");
      Session.set('adding_answers',false); 
    } else {
      Session.set('adding_answers',true); // Causes template newAnswers to be displayed
    }
    return session.get('adding_answers');
  }
});`    

首先,你不能return来自事件处理程序的任何东西,比如会话变量

其次,您需要为 adding_answers 定义助手,如下所示,以便代码运行

Template.newQuestions.helpers({
   adding_answers: function(){
    return Session.get('adding_answers')
  }
})

阅读更多关于助手的信息here