我在文本框上有自动填充功能,显示邮政编码,城市,州。目前我开始输入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
}]
}
}
提前致谢
答案 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
}]
}
}