如何使用多个规则触发自动完成功能。

时间:2015-01-07 03:04:22

标签: meteor

我在文本框上有自动填充功能,显示邮政编码,城市,州。目前我开始输入zipcode [例如55414]自动完成工作并开始显示相关的zip,city和State。但是,如果我开始输入城市名称,我无法弄清楚如何触发自动完成功能。我想在文本框中使用这两个触发器。我试图在规则数组中添加另一个规则,但它不起作用。 ZipCodes集合具有_id,city,state字段。 _id是邮政编码。

Template.search.helpers({ settings : function () { return { position: "bottom", limit: 20, rules: [{ collection: ZipCodes, field: "_id", template: Template.userPill }] } }

提前致谢

2 个答案:

答案 0 :(得分:0)

我认为您正在使用meteor-autocomplete 在这种情况下,您可以使用选择器选项



Template.search.helpers({
    settings : function () {
        return {
            position: "bottom",
            limit: 20,
            rules: [{
                collection: ZipCodes,
                field: "_id",
                template: Template.userPill,
                selector: function(match) {
                   var regex;
                   regex = new RegExp(match, 'i');
                   return {
                       $or: [
                          {
                               '_id': regex
                          }, {
                               'city': regex
                          }
                       ]
                   };
                },

            }]
        }
    }
})
     




答案 1 :(得分:0)

我知道这个答案对你来说太迟了,但它对将来的某些人有帮助。只需在服务器端publish函数内执行此操作。

Meteor.publish('ZipCodesPublication', function(selector, options) {
  let limitTo = Math.abs(options.limit) > 50 ? 50 : options.limit,
    defaultSelector = selector._id,
    regEx = defaultSelector.$regex,
    regExOptions = defaultSelector.$options,
    customSeletor = {
        $or: [
          {
            city: {
              $regex: regEx,
              $options: regExOptions
            }
          },
          {
            _id: {
              $regex: regEx,
              $options: regExOptions
            }
          }
        ]
      };

  Autocomplete.publishCursor(Clients.find(customSeletor), this);
  this.ready();
});

只需在客户端执行此操作:

Template.search.helpers({
    settings : function () {
        return {
            position: "bottom",
            limit: 20,
            rules: [{
                collection: 'ZipCodes',
                subscription: 'ZipCodesPublication',
                field: "_id",
                template: Template.userPill
            }]
        }
    }