2015-01-07 66 views
0

我有一個文本框顯示郵編,城市,州的自動完成。目前,當我開始輸入郵編[例如55414]自動完成工作,並開始顯示相關的郵編,城市和州。但是如果我開始輸入城市名稱,我無法弄清楚如何觸發自動完成功能。我希望在文本框中使用這兩個觸發器。我試圖在規則數組中添加另一個規則,但它不起作用。 ZipCodes收集了_id,城市,州字段。 _id是郵編。如何使用多個規則觸發自動填充。

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

在此先感謝

+0

哪個包/庫您使用的自動完成? – Sasikanth

回答

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 
 
          } 
 
         ] 
 
        }; 
 
       }, 
 

 
      }] 
 
     } 
 
    } 
 
}) 
 

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 
      }] 
     } 
    }