我有以下使用预输入代码:
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干扰而对结果进行排序或过滤?
谢谢! :)