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
在下面的代码中,当我单击按钮时,我希望 {{#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