2015-04-27 13 views
6

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.

Odpowiedz

6

spróbuj przenieść przekształcić wewnątrz opcją zdalnego tak:

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

@Kristoffer Sall-Storgaard, faktycznie jest to odpowiedź, ale może nie być w czystej postaci, przepraszam za tym – skazska

+0

edytowany odpowiedź , jeśli nie jest to poprawa, zachęcamy do wycofania go. –

+0

@Kristoffer Sall-Storgaard dziękuję. – skazska

Powiązane problemy