2012-11-26 20 views
12

Ben typeahed için source değiştirmek için bir yol arıyorum. Örneğin, aşağıdaki 2 listeye sahip olduğumu varsayalım ve duruma bağlı olarak, farklı bir kaynakla çalışarak typeahead çalışmasını istiyorum.bootstrap typeahead - değişen kaynak

var list1 = ["this", "is", "first", "list"], 
    list2 = ["second", "list", "comes", "here"]; 

$("selector").typeahead({source: list1}) 

Sonra ben

$("selector").typeahead({source: list2}) 

yapmak ve giriş kutusuna yazmaya başladığınızda, ilk liste yenisi altında görünür.

Ben hiçbir etkisi yoktur, Henüz
$("selector") 
    .removeData() 
    .typeahead({source: list2}) 

yapıyor çalıştı.

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

olası yinelenen: // stackoverflow .com/questions/13516396/update-the-source-option-in-bootstrap-typeahead-js) –

cevap

22

Sen belirtildiği here olarak ilişkili veri alanı güncelleştirmek zorunda. Kütüphanenin yeni sürümleriyle ilgili bir sorun olabilir. Benim için veri ('typeahead') tanımlanmamıştır - bunun yerine veri ('ttTypeahead') ve veriler ('ttAttrs') vardır. Bunlardan hiçbirinin bir kaynak özelliği yoktur. $('selector').data('ttTypeahead').dropdown.datasets[0].source = mySourceFunction

Ve o iş gibi görünüyor:

bazı kod okuma sonra bu geldi. Yine de birden fazla veri kümesinin tanımlandığı durumlar olabilir.

+0

Bu doğru, sadece bunu https://github.com/twitter/bootstrap/issues/ adresinden geldi 1997 # issuecomment-4011687 –

+0

Evet, bu bulduğum bağlantı aynıdır :) –

+10

Alışmıyorum özelliği 'kaynak' undefined ayarlanamıyor –

1

Maalesef kabul yanıt benim için işe yaramadı:

+1

Bu yazım çalışmıyor twitter typeahead 0.11.1 – user1279887

5

Bu yanıtların hiçbiri, Bootstrap-3-Typeahead kitaplığını kullanırken işe yaramadı. Ben başlatıldı typeahead yok etmek ve yeniden tarafından kaynağını güncelleştirmek başardı yeni kaynağı ile başlatılıyor:

$(".typeahead").typeahead("destroy"); 
    $(".typeahead").typeahead({ source: result }); 
[kaynak Seçeneği nasıl güncellenir bootstrap-typeahead.js] (http
+0

Ne yazık ki, bu aynı zamanda olayları yok etmenin etkisine de sahiptir. n bu eleman ... – skirato

+0

Doğru, bunları kaynakla birlikte uygulamanız gerekir. –

+0

Kullandığınız tüm olay işleyicilerini el ile kaldırdığınızdan emin olun (ör. 'yok' yöntemini çağırdığınızda 'typeahead: close'). Bu yöntem, bu işleyicileri ortadan kaldırmaz, böylece yok ettiğinizde ve yeniden oluşturduğunuzda, ekleme ve küçültme performansına devam ederler. – Joel

İlgili konular