如何在流星查找方法中传递可变参数
问题描述:
使用“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>
问题分贝收集
{ "_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" ] }
答
我的预感是,当你设置的参数模板帮手questions(qnum)
它期望一个,但在{{#each questions}}
位,你不通过任何ING。尝试在template.helper DEF删除qnum
中,使之成为
Template.body.helpers({
questions: function() {
return Questions.find({qnum: qnum});
}
});
未经测试。让我知道它是否有效。
要真正让您的帮手重新运行按钮单击,您需要使查询参数(qnum)无效。在这里,流星提供了各种选择,最明显的就是将您的qnum
值存储在会话中。
Session.set("qnum", qnum)
,然后在模板助手查询
return Questions.find({qnum: Session.get("qnum") });
谢谢,现在它返回的对象。然而,我面临的另一个问题是,按钮的按钮递增的值不会通过Questions.find方法返回。 –
我更新了我的答案,请检查它是否适用于您。 – tomsp