使用" qnum"进行查找查询时变量参数作为一个值,它不会返回任何数据。是由于对象内部变量范围的限制吗?
Quiz.js文件
Questions = new Mongo.Collection("questions");
if (Meteor.isClient) {
var qnum = 1;
Template.question.events({
"click #submit-btn": function (event, template) {
//Increment question number when user click on submit button which loads the next question
qnum += 1;
}
});
Template.body.helpers({
questions: function (qnum) {
return Questions.find({qnum: qnum});
}
});
}
Quiz.html文件
<div class="quiz">
<div class="score-board">
{{#each questions}}
{{> question}}
{{/each}}
</div>
</div>
</body>
<template name="question">
<div class="qa-wrapper" id="{{qnum}}">
<div class="questions">{{title}}</div>
<div class="options">
{{#each options}}
<input type="checkbox" name="{{this}}"/>{{this}} <br />
{{/each}}
<button id="submit-btn">Submit</button>
</div>
</div>
</template>
问题db collection
{ "_id" : ObjectId("55a207a21c4dbe14cf9837c7"), "qnum" : 1, "title" : "Question 1", "options" : [ "A", "B", "C", "D" ] }
{ "_id" : ObjectId("55a207b31c4dbe14cf9837c8"), "qnum" : 2, "title" : "Question 2", "options" : [ "A", "B", "C", "D" ] }
答案 0 :(得分:1)
我的预感是,当您为模板助手questions(qnum)
设置参数时,它会预期一个,但是在{{#each questions}}
位中您不会传递任何内容。尝试删除template.helper def中的qnum
in,使其成为
Template.body.helpers({
questions: function () {
return Questions.find({qnum: qnum});
}
});
未经测试。让我知道它是否有效。
要实际让助手重新运行按钮单击,您需要使查询参数(qnum)具有反应性。在这里,Meteor提供了各种选择,最明显的是将qnum
值存储在会话中。
Session.set("qnum", qnum)
然后在模板助手查询中
return Questions.find({qnum: Session.get("qnum") });