У меня есть файл json, который выводит
{"data": ["A", "B", "C", "D", ...]}
Мой скрипт typeahead.js выглядит так
var engine = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: 'list.json',
filter: function(list) {
return $.map(list, function(person) { return { name: person }; });
}
}
});
engine.initialize();
$('.typeahead').typeahead(null, {
displayKey: 'name',
source: engine.ttAdapter()
});
Скрипт typeahead.js активируется правильно, но интерпретирует источник данных как один элемент, разделенный запятыми, а не как отдельные элементы. Поэтому вместо «поиска» по элементам «A», «B», «C» и т. д. он просто дает мне одно предложение «A, B, C, ...".
Что не так с моим скриптом? Я следовал примерам на странице http://twitter.github.io/typeahead.js/examples/. а>.
Если я изменю «имя» на «значение» как в datumTokenizer, filter, так и в displayKey, он вообще не получит никаких элементов, а выведет только «неопределенное». Я почти уверен, что это параметр фильтра внутри предварительной выборки, который работает неправильно.