Używam Bloodhound ze zdalnym interfejsem API i potrzebuję przekształcić wynik zwrócony ze zdalnego interfejsu API.Bloodhound.js: Przekształca dane zwracane przez zdalne źródło?
Adres URL interfejsu API to https://www.googleapis.com/books/v1/volumes?q=quilting, który zwraca obiekt z właściwością items
, która jest listą. Muszę zwrócić tę listę do Typeahead, a nie do obiektu najwyższego poziomu.
Dokumentacja Bloodhound mówi, że there is a transform
function that is supposed to do this, ale nie mogę jej uruchomić.
Oto mój kod:
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()
});
I JSFIddle tutaj: http://jsfiddle.net/2Cres/46/
ten nie działa, bo trzeba nakarmić listę items
w interfejsie wpisywanie znaków z wyprzedzeniem, ale to nie wydaje by się dzieje.
@Kristoffer Sall-Storgaard, faktycznie jest to odpowiedź, ale może nie być w czystej postaci, przepraszam za tym – skazska
edytowany odpowiedź , jeśli nie jest to poprawa, zachęcamy do wycofania go. –
@Kristoffer Sall-Storgaard dziękuję. – skazska