2012-11-26 2 views
12

나는 타입 업하기 위해 source을 바꿀 방법을 찾고 있습니다.부트 스트랩 타입 어 헤드 - 변경 소스

예를 들어, 다음 2 개의 목록이 있다고 가정하고 사례에 따라 다른 소스로 작업하고 싶습니다.

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; 
+1

가능한 중복 : // 유래 .com/questions/13516396/how-to-update-source-option-in-bootstrap-typeahead-js) –

답변

22

당신은 표시 here으로 관련된 데이터 필드를 업데이트해야합니다. 최신 버전의 라이브러리에서 문제가 될 수 있습니다. 나에게는 데이터 ('선견자')가 정의되어 있지 않다. 대신 데이터 ('ttTypeahead')와 데이터 ('ttAttrs')가있다. 둘 다 소스 특성을 가지고 있지 않습니다. $('selector').data('ttTypeahead').dropdown.datasets[0].source = mySourceFunction

을 그리고 작동하는 것 같다 :

일부 코드 판독 후 나는이 함께했다. 하나 이상의 데이터 세트가 정의되는 경우가있을 수 있습니다.

+0

이 맞다. https://github.com/twitter/bootstrap/issues/에서이 문제가 발생했다. 1997 # issuecomment-4011687 –

+0

그래, 내가 찾은 동일한 링크입니다 :) –

+10

내가 얻을 수 없습니다 정의되지 않은 '소스'를 설정할 수 없습니다 –

1

불행하게도, 허용 대답은 나를 위해 작동하지 않았다

+1

이것은 트위터 typeahead 0.11.1 – user1279887

5

Bootstrap-3-Typeahead 라이브러리를 사용할 때 이러한 답 중 아무 것도 작동하지 않았습니다. 나는 초기화 선행 입력을 파괴하고 다시하여 소스를 업데이트 할 수 있었다 새로운 소스로 초기화 :

$(".typeahead").typeahead("destroy"); 
    $(".typeahead").typeahead({ source: result }); 
[의 소스 옵션 업데이트하는 방법 부트 스트랩을-typeahead.js] (HTTP의
+0

에서 작동하지 않습니다 불행하게도 이것은 또한 사건을 파괴하는 효과가있다. 그 요소는 ... – skirato

+0

맞습니다. 소스와 함께 적용해야합니다. –

+0

사용중인 이벤트 핸들러를 수동으로 바인딩 해제해야합니다. 'typeahead : close')를 호출하면 'destroy'메소드가 호출됩니다. 이 메서드는 이러한 핸들러를 바인딩 해제하지 않으므로 파기하고 다시 작성할 때마다 성능을 추가하고 저하시킵니다. – Joel

관련 문제