2015-12-18 4 views
3

Я пытаюсь выяснить, как работает Bloodhound (без typeahead).Использование поиска с Bloodhound

var engine = new Bloodhound({ 
    local: [{ id: 1, name: 'dog' }, { id: 2, name: 'pig' }], 
    identify: function(obj) { return obj.id; }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    datumTokenizer: Bloodhound.tokenizers.whitespace 
}); 

engine.search('do', function(datums) { 
    console.log(datums); // results: [] 
}); 

В этом очень базовом примере, почему мой поиск не возвращает мой первый элемент? Что я делаю неправильно?

ответ

2

Изделие из Битхоунда действует для массива базового типа. У вас есть «сложные» данные (объект с 2 свойствами), поэтому вы должны сообщить Bloodhoud, что делать токенизу, используя токенизатор obj и пропущенные имена собственности:

datumTokenizer: Bloodhound.tokenizers.obj.whitespace("id", "name"),