2015-04-27 3 views
6

Я использую Bloodhound с удаленным API, и мне нужно преобразовать результат, полученный от удаленного API.Bloodhound.js: Преобразование данных, возвращаемых удаленным источником?

URL-адрес API: https://www.googleapis.com/books/v1/volumes?q=quilting, который возвращает объект с свойством items, являющимся списком. Мне нужно вернуть этот список в Typeahead, а не в объект верхнего уровня.

The Bloodhound docs говорят, что there is a transform function that is supposed to do this, но я не могу заставить его работать.

Вот мой код:

var books = new Bloodhound({ 
    datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: { 
    url: 'https://www.googleapis.com/books/v1/volumes?q=quilting' 
    }, 
    transform: function(response) { 
    console.log('transform', response); 
    return response.items; 
    } 
}); 
books.initialize(); 

// instantiate the typeahead UI 
$('#myTextBox').typeahead(null, { 
    displayKey: function(suggestion) { 
    console.log('suggestion', suggestion); 
    return suggestion.volumeInfo.title + suggestion.volumeInfo.publishedDate; 
    }, 
    source: numbers.ttAdapter() 
}); 

И JSFIddle здесь: http://jsfiddle.net/2Cres/46/

Это не работает, потому что мне нужно кормить items список в машинописный UI, но это не кажется чтобы происходить.

ответ

6

Try перемещения преобразования внутри выносной, например:

remote { 
    url:"fdsfds", 
    transform: function (response){...} 
} 
+0

@Kristoffer Салль-Storgaard, на самом деле это ответ, но, может быть не в чистой форме, жаль что – skazska

+0

я редактировал свой ответ , если это не улучшение, не стесняйтесь откатывать его. –

+0

@ Kristoffer Sall-Storgaard благодарит вас. – skazska

Смежные вопросы