我有以下问题:我有一个界面,用户可以根据几个输入过滤掉东西。有5个输入。填写输入时,我想将它的值添加到返回集合的助手中。我无法解决的问题是如何动态地执行此操作。有时用户可能会填写一个输入,有时是三个,有时是全部5.在find()方法中,你只能写下meteor的语法:
mongoSelector: fieldName,
这意味着您只能对find()中的内容进行硬编码。但是添加所有5个选择器都不起作用,因为如果其中一个值为空,则find会搜索空字符串而不是空字符串。
我想过做条件或变量,但由于所需的语法,两者都不能在find中工作。我该怎么做才能解决这个问题?
var visitorName;
var visitorAge;
Session.set('visitorName', visitorName);
Session.set('visitorAge', visitorAgee);
Template.web.helpers({
visitors: function() {
return Visitors.find({ visitor_name: Session.get('visitorName'), visitor_age: Session.get('visitorAge') });
}
});
Template.web.events({
"change #visitor_name": function (event, template) {
visitorName = $(event.currentTarget).val();
}
});
Template.web.events({
"click #reset_filter": function (event, template) {
return Visitors.find();
$(input).val('');
}
});
答案 0 :(得分:1)
这个有效
Template.web.helpers({
visitors: function() {
var query = {};
var visitorName = (Session.get('visitorName') || "").trim();
if (visitorName) {
query["visitor_name"] = visitorName;
}
//same thing for other fields
return Visitors.find(query);
}
});
Template.web.events({
"change #visitor_name": function (event, template) {
var visitorName = $(event.currentTarget).val();
Session.set('visitorName', visitorName);
}
});