Typeahead Twitter + Bloodhound с объектами JSON

Я не могу заставить его работать с объектами JSON. Я следил за несколькими вопросами здесь, на SO, и ни один из ответов мне не помог.

$(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"}
]

person Mave    schedule 24.09.2014    source источник
comment
используйте console.log(list) внутри prefetch.filter, чтобы убедиться, что что-то есть   -  person john Smith    schedule 25.09.2014


Ответы (1)


Причина, по которой это не сработало, заключалась в использовании Typeahead LocalStorage (или, возможно, в моем злоупотреблении им, я думаю, мы никогда не узнаем). Как только я это очистил, все сразу заработало.

person Mave    schedule 27.09.2014
comment
вы можете установить для свойства cache значение false внутри настройки объекта Bloohound, по умолчанию это значение true, что позволяет Bloodhound использовать localStorage для кэширования извлеченных данных. - person Zubair Alam; 28.09.2015