Ответ 1
Вам необходимо обновить поле данных, указанное как указано здесь:
$("selector").data('typeahead').source = list2;
Я ищу способ изменить source
для typeahed.
Например, предположим, что у меня есть следующие 2 списка и зависит от случая, я хотел бы, чтобы typeahead работал с другим источником.
var list1 = ["this", "is", "first", "list"],
list2 = ["second", "list", "comes", "here"];
$("selector").typeahead({source: list1})
Тогда, когда я делаю
$("selector").typeahead({source: list2})
и начните вводить в поле ввода, первый список появится под новым.
Я пробовал делать
$("selector")
.removeData()
.typeahead({source: list2})
Тем не менее, это не влияет.
Вам необходимо обновить поле данных, указанное как указано здесь:
$("selector").data('typeahead').source = list2;
Ни один из этих ответов не работал у меня при использовании библиотеки Bootstrap-3-Typeahead. Я смог обновить источник, уничтожив инициализированный тип и повторно инициализируя его новым источником:
$(".typeahead").typeahead("destroy");
$(".typeahead").typeahead({ source: result });
К сожалению, принятый ответ не сработал у меня. Это может быть проблема с более новыми версиями библиотеки. Для меня данные ('typeahead') не определены - вместо этого есть данные ('ttTypeahead') и данные ('ttAttrs'). Ни один из них не имеет атрибута источника.
После некоторого чтения кода я придумал следующее:
$('selector').data('ttTypeahead').dropdown.datasets[0].source = mySourceFunction
И это работает. Однако могут быть случаи, когда определено более одного набора данных.