Я использую Twitter Typeahead в версии 0.11.1. Теперь я пытаюсь правильно работать с удаленной работой, но почему-то я думаю, что получаю странное поведение.Twitter Typeahead remote не выполняет некоторые запросы
Это рабочий код с локальным массивом:
var localArray = [{"value":"test0"},{"value":"test1"},{"value":"test2"},{"value":"test3"},{"value":"test4"}];
var myds = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: localArray
});
$(function() {
$("#my-input").typeahead({},
{
name: 'ds1',
source: myds,
display: 'value'
});
});
Теперь я пытаюсь настройки удаленных данных. То, что я сделал, это просто изменить локальный на удаленный и предоставить URL-адрес и добавить параметр запроса. Он будет предоставлять точно такую же структуру и данные, что и localArray (он в настоящее время игнорирует запрос и всегда доставляет содержимое локального массива только для проверки этого). Я проверил в Chrome Developer Tools, что запрос фактически выполняется и возвращает содержимое localArray:
var myds = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/autocomplete?query=%QUERY',
wildcard: '%QUERY'
}
});
$(function() {
$("#my-input").typeahead({},
{
name: 'ds1',
source: myds,
display: 'value'
});
});
Как-то это не работает при поиске test
. При поиске tes
я все еще получаю результаты, но когда я ищу test
, для автозаполнения результатов не найдено. Есть и другие слова, для которых это не работает, и похоже, что они следуют одной и той же схеме, так как полное слово не найдено, когда найдены части слов. Любая идея, что вызывает это поведение или как его исправить?
Я полагаю, что удаленный источник данных должен быть в другом формате, но я не могу найти, как он должен выглядеть. Все примеры на странице typeahead выглядят очень похожими ...
В каком формате находятся ваши удаленные данные? –
Это просто json: '' [{"value": "test0"}, {"value": "test1"}, {"value": "test2"}, {"value": "test3"}, { "value": "test4"}] '' – Tim
Я хочу посмотреть, есть ли у вас известная ошибка с typeahead. Не могли бы вы добавить «limit: 2» в свои настройки typeahead и посмотреть, начнутся ли другие поисковые запросы (конечно, только возврат 2 результатов)? –