2014-09-24 77 views
4

我無法讓它與JSON對象一起工作。我在這裏跟着多個問題,沒有任何答案對我有幫助。Twitter的typeahead +帶有JSON對象的Bloodhound

$(function() { 
var items = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 10, 
    prefetch: { 
     url: 'items.json', 
     filter: function(list) { 
      return $.map(list, function(item) { 
       return { 
        name: item.name, 
        category: item.category, 
        release: item.release, 
        id: item.id 
       }; 
      }); 
     } 
    } 
}); 

items.initialize(); 

$('.typeahead').typeahead(null, { 
    name: 'items', 
    displayKey: 'name', 
    source: items.ttAdapter() 
}); 
}); 

JSON是:

[ 
{"id":"4","name":"Name 1","release":"July 28, 2014","category":"Bow"}, 
{"id":"1","name":"Name 2","release":"October 29, 2014","category":"Bow"}, 
{"id":"13","name":"Name 3","release":"November 27, 2014","category":"Arrow"} 
] 
+0

在prefetch.filter中使用console.log(列表)確保這些東西 – 2014-09-24 22:18:45

回答

3

的原因,它不會工作,是因爲事先鍵入的內容的localStorage的用法(或者我對它的濫用,我想我們永遠也不會知道)。只要我清除它,它立即奏效。

+1

您可以在設置Bloohound對象時將'cache'屬性設置爲false,默認情況下爲true,它讓Bloodhound使用localStorage來緩存獲取的數據。 – 2015-09-28 11:44:53