Я использую twitter typeahead, чтобы предоставить раскрывающийся список результатов, возвращаемых веб-службой. Я обнаружил, что он отображает только часть этих результатов; по-видимому, он подавляет любой, который начинается с одного и того же первого слова.
var $termInput = $("#someId");
var lookup = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url:/search/ + "%QUERY",
wildcard: '%QUERY'
}
});
lookup.initialize();
$termInput.typeahead(
{ hint: true, highlight: true },
{
source: lookup,
name: 'cases',
displayKey: 'id',
valueKey: 'id',
templates: {
empty: "<div class='omniboxresult nomatch'>No matching cases found</div>",
suggestion: function(data) {
console.log(data);
return "<div class='omniboxresult'><div class='caseName'>" + "hi " +data.text + "</div></div>";
}
}
}
);
HTML это:
<input type=text" class="form-control" id="someId" value="" data-provider="typeahead" autocomplete="off">
Используя вкладку сети, я знаю, что мой веб-сервис возвращается (когда я ввожу «Евро»):
[{"id":"1991003933","level":0,"text":"EUROPEAN COMMUNITY"},
{"id":"1971004125","level":0,"text":"EUROPEAN ECONOMIC COMMUNITY"},
{"id":"2011007673","level":0,"text":"EUROPEAN UNION"},
{"id":"2011000582","level":0,"text":"EUROPEAN UNION"}]
Но я получаю только следующее в своем выводе:
Если бы я ввел «e», я получил бы больше результатов, например. «Английский», который не подавляется (но я все равно получаю только один результат, начинающийся с «ЕВРОПЕЙСКОГО»
Почему это происходит и как я могу заставить его отображать все полученные результаты?