Bloodhound.js: преобразовать данные, возвращаемые удаленным источником?

Я использую Bloodhound с удаленным API, и мне нужно преобразовать результат, возвращаемый удаленным API.

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

Документы Bloodhound говорят, что предполагается, что существует transform функция сделать это, но я не могу заставить его работать.

Вот мой код:

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 в пользовательский интерфейс с опережением ввода, но, похоже, этого не происходит.


person Richard    schedule 27.04.2015    source источник


Ответы (1)


Попробуйте переместить преобразование внутри удаленной опции, например:

remote {
  url:"fdsfds",
  transform: function (response){...}
}
person skazska    schedule 27.04.2015
comment
@Kristoffer Sall-Storgaard, на самом деле это ответ, но может быть не в ясной форме, извините за это - person skazska; 28.04.2015
comment
Я отредактировал ваш ответ, если это не улучшение, не стесняйтесь откатывать его. - person Kristoffer Sall-Storgaard; 28.04.2015