2

我有以下问题:我有一个界面,用户可以根据几个输入过滤掉内容。有 5 个输入。填写输入后,我想将其值添加到返回集合的助手中。我无法解决的问题是如何动态地做到这一点。有时用户可能会填写一个输入,有时是三个,有时是全部 5。在 find() 方法中,您只能写下流星的语法:

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('');    
  }
});
4

1 回答 1

1

http://jsfiddle.net/m5qxoh3b/

这个有效

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);
  }
});
于 2014-12-25T21:53:56.140 回答