Подтвердить что ты не робот

Bootstrap typeahead - изменение источника

Я ищу способ изменить 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})

Тем не менее, это не влияет.

4b9b3361

Ответ 1

Вам необходимо обновить поле данных, указанное как указано здесь:

$("selector").data('typeahead').source = list2;

Ответ 2

Ни один из этих ответов не работал у меня при использовании библиотеки Bootstrap-3-Typeahead. Я смог обновить источник, уничтожив инициализированный тип и повторно инициализируя его новым источником:

    $(".typeahead").typeahead("destroy");
    $(".typeahead").typeahead({ source: result });

Ответ 3

К сожалению, принятый ответ не сработал у меня. Это может быть проблема с более новыми версиями библиотеки. Для меня данные ('typeahead') не определены - вместо этого есть данные ('ttTypeahead') и данные ('ttAttrs'). Ни один из них не имеет атрибута источника.

После некоторого чтения кода я придумал следующее: $('selector').data('ttTypeahead').dropdown.datasets[0].source = mySourceFunction

И это работает. Однако могут быть случаи, когда определено более одного набора данных.