Javascript meteor find方法中如何传递变量参数
当使用“qnum”变量参数作为值执行查找查询时,它不会返回任何数据。这是由于对象内部变量范围的限制吗 quick.js文件Javascript meteor find方法中如何传递变量参数,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,当使用“qnum”变量参数作为值执行查找查询时,它不会返回任何数据。这是由于对象内部变量范围的限制吗 quick.js文件 Questions = new Mongo.Collection("questions"); if (Meteor.isClient) { var qnum = 1; Template.question.events({ "click #submit-btn": function (event, template) { //Increme
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});
}
});
}
quick.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>
我的直觉是,当你为模板助手
questions(qnum)
设置一个参数时,它需要一个参数,但是在{{{each questions}}
位中,你不会传递任何东西。尝试删除template.helper def中的qnum
,使其成为
Template.body.helpers({
questions: function () {
return Questions.find({qnum: qnum});
}
});
未经测试。让我知道它是否有效
要让助手在单击按钮时重新运行,您需要使查询参数(qnum)处于被动状态。在这里,Meteor提供了多种选择,最明显的选择是在会话中存储您的qnum
值
Session.set("qnum", qnum)
然后在模板帮助器查询中
return Questions.find({qnum: Session.get("qnum") });
谢谢,现在是归还物品的时候了。但是,我面临的另一个问题是,单击按钮后,递增的值不会通过Questions.find方法返回。我将更新我的答案,请检查它是否适用于您。
return Questions.find({qnum: Session.get("qnum") });