Я использую библиотеку angularJS от sifyion для typeahead, которая на самом деле использует typeahead.js, bloodhound.js и jquery. У меня есть typeahead.js v 0.10.2 и jquery 1.10.2. Моя цель - создать функцию поиска, в которой пользователь может выбирать только из предложений. поэтому я реализовал это таким образом, что если результат предложения не выбран, запрос с параметром Null отправляется, иначе предложение отправляется. Я установил свои параметры как
minLength: 1,
hightlight: true,
editable: false
У меня есть три набора данных, например:
var bloodhoundStores = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url:'/url/param',
filter: function(stores){
return $.map(stores,function(store){return {name: store.name}})
}
}
});
Я вызываю очистку кеша для всех из них и инициализирую их после этого, просто чтобы вы знали. Я не очень разбираюсь в этом, но это решает мою задачу.
bloodhoundStores.clearPrefetchCache(); (on all three datasets)
.
bloodhoundStores.initialize(); (on all three datasets)
затем я настроил его для рендеринга предложений, например:
{
name: 'Locality',
displayKey: 'name',
source: bloodhoundLocality.ttAdapter(),
templates:{
header: '<h4 style="padding-bottom: 2px;"><i class="fa fa-location-arrow"></i>Locality</h4>',
empty:['<p>','<span>No results found</span>','</p>'].join('\n'),
suggestion: Handlebars.compile('<p><span class="sentence-case">{{name}}</span></p>')
}
}
Моя проблема в том, что если пользователь вводит слово для поиска, я хочу, чтобы было выбрано первое предложение, если оно есть. Я искал решение в репозитории github twitter typeahead.js для решения проблем. Я не смог найти способ заставить их работать на меня. Пожалуйста, помогите мне или предложите мне другой способ реализовать это.
заранее спасибо