2014-02-27 52 views
1

所以我試圖使用Twitter的Typeahead自動完成庫。我預取了一些我擁有的JSON數據,然後將我需要的信息放入數組中。我給這家代碼可以看到下面:Twitter Typeahead With Prefetched JSON

var test = new Bloodhound({ 
    datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.name); }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 10, 
    prefetch: { 
    url: 'http://localhost:3000/suggestions', 
     filter: function(list) { 
     nameArray = []; 
     for(var i = 0; i < list.length; ++i){ 
      nameArray.push(list[i].name); 
     } 
     window.alert(nameArray) 
     return nameArray; 
     } 
    } 
}); 

test.initialize(); 

$('.example-test .typeahead').typeahead(null, { 
    name: 'test', 
    source: test.ttAdapter() 
}); 

我使用的警報,以確保該數組是什麼,我希望它是,這僅僅是一個字符串數組。

上面的代碼似乎沒有產生任何東西,但。我沒有獲得自動完成功能。該數組生成正確,所以我不確定問題是什麼。我使用Twitter提供的示例測試了我的HTML和CSS,並且它們完美無瑕地工作。任何幫助是極大的讚賞。

回答

1

競爭條件 - 您只需在ajax請求成功後應用typeahead調用。

把最後一塊放到成功函數中,你應該很好。

+0

你能更清楚地回答你的問題嗎?我試圖把「$('example-test.typeahead')。typeahead(null,{ name:'test', source:test.ttAdapter() });」在一個函數中,但似乎沒有解決這個問題。對不起,一位JavaScript新手。感謝您的幫助。 –

+0

您需要在預取完成後才調用該塊(預先打印)。我不熟悉你的模型,我不確定在哪裏告訴你調用這個函數。 –