На странице примеров Twitter показано, как использовать несколько наборов данных с Typeahead. Вот рабочий пример кода с использованием параметра источника данных local
:
var nbaTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: []
});
var nhlTeams = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: []
});
nbaTeams.initialize();
nhlTeams.initialize();
$('#multiple-datasets .typeahead').typeahead({
highlight: true
},
{
name: 'nba-teams',
displayKey: 'team',
source: nbaTeams.ttAdapter(),
templates: {
empty: [
'<div class="tt-empty-message">',
'No Results',
'</div>'
].join('\n'),
header: '<h3 class="tt-tag-heading tt-tag-heading2">1</h3>'
}
},
{
name: 'nhl-teams',
displayKey: 'team',
source: nhlTeams.ttAdapter(),
templates: {
empty: [
'<div class="tt-empty-message">',
'No Results',
'</div>'
].join('\n'),
header: '<h3 class="tt-tag-heading tt-tag-heading2">2</h3>'
}
});
Если вы опробуете вышеуказанный JSFIDDLE, введя ввод на странице, вы увидите, что два набора данных показаны в раскрывающемся списке «Вперед».
Проблема, с которой я столкнулся, заключается в том, что если я изменю источник данных на remote
, в раскрывающемся списке отображается только второй набор данных. Я упростил свой remote
код (который фактически отправляет запрос с помощью POST вместо get), и вы можете увидеть его здесь:
Если вы попробуете этот JSFIDDLE, вы увидите, что только второй набор данных отображается в раскрывающемся списке «Вперед». если вы просматриваете сетевой трафик при вводе ввода, вы увидите, что выполняется только один запрос AJAX, тогда как их должно быть два (по одному для каждого набора данных).
Когда я просматриваю сетевой трафик на своем веб-сайте (с моим настоящим кодом), он также показывает, что запрос сделан только для второго набора данных. Итак, по какой-то причине Typeahead / Bloodhound делает запрос только для второго набора данных, а не для каждого набора данных. Он также отображает результаты (или их отсутствие) только для второго набора данных, а не для каждого набора данных.
Почему при использовании параметра источника данных remote
не работают несколько наборов данных?