我有以下使用预输入代码:
var cities = function() {
var cities = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('display'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
//prefetch: 'inc/api/typeahead/movies.json',
remote: {
url: '/search/cities/%QUERY',
wildcard: '%QUERY'
}
});
$('#city, #delivery-city, #company-city').typeahead({
hint: true,
highlight: true,
minLength: 1,
}, {
name: 'city',
display: 'city',
source: cities,
limit: 5,
templates: {
empty: [
'<div class="empty-message" style="padding: 10px 15px; text-align: center;">',
'No city found with this name.',
'</div>'
].join('\n'),
suggestion: Handlebars.compile('<div><span class="m--font-primary m--font-boldest">{{ display }}</span></div>')
},
matcher: function(item) {
return true;
}
}).on('typeahead:selected', onSelectedCity);
function onSelectedCity(e, data) {
$('#county').val(data['county']);
$('#street').val(data['street']);
$('#postal-code').val(data['zipcode']);
}
}
我遇到的问题是我使用Algolia来过滤结果,并且我希望Bloodhound保留从Algolia接收到的确切结构,而不以任何方式干扰或过滤结果。我也不想带出Bloodhound,因为我对通过AJAX和所有其他好东西来缓存和限制请求数量感兴趣。有没有一种方法可以利用所有其他好处,但是将结果保持与从Algolia收到的AJAX调用中得到的结果完全相同,而不会因Bloodhound干扰而对结果进行排序或过滤?
谢谢! :)