Я использую 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, но это не кажется чтобы происходить.
@Kristoffer Салль-Storgaard, на самом деле это ответ, но, может быть не в чистой форме, жаль что – skazska
я редактировал свой ответ , если это не улучшение, не стесняйтесь откатывать его. –
@ Kristoffer Sall-Storgaard благодарит вас. – skazska