Я использую jQuery Typeahead без ищейки.
Все, что я хочу, - это иметь возможность динамически переключаться между двумя разными наборами данных.
Это мой текущий код:
function updateTypeahead() {
console.log("updating typeahead");
window.typea = $('.js-typeahead').typeahead({
minLength: 1,
maxItem: 200,
dynamic: true,
backdrop:false,
order: null,
offset: "true",
display: ["word","searchable"],
accent: true,
source: {
data: function(query, sync, async) {
return window.datasource[localStorage.getItem("scaDictLang")];
}
},
callback: {
onInit: function (node) {
console.log('Typeahead Initiated on ' + node.selector);
console.log($(node));
},
onSearch: function (node, query) {
console.log("onSearch");
},
onSubmit: function (node, form, item, event) {
if (item==null) {
var firstItem = $($(".typeahead__list li a strong")[0]).text();
if (firstItem!=""){
window.location.href = window.searchurl[localStorage.getItem("scaDictLang")]+firstItem;
}
}
else {
//console.log("onSubmit:", item);
}
return false;
},
onClickAfter: function (node, a, item, event) {
window.location.href = window.searchurl[localStorage.getItem("scaDictLang")]+item.word
}
},
template: window.dicttemplate[localStorage.getItem("scaDictLang")],
emptyTemplate: [
'<div class="empty-message">',
'unable to find any entries that match your query',
'</div>'
].join('\n')
});
}
Дело в том, что если я вызываю его один раз, все работает нормально. Я попытался изменить источник другим способом, но в итоге просто переинициализировал Typeahead для того же элемента управления.
Это тоже работает, но без «уничтожения» более старого экземпляра.
Как я могу это сделать?
(Я везде искал SO, документацию по проекту и исходный код проекта, но все еще не уверен ... Я думаю, что большинство доступных ресурсов серьезно устарели)