Ответ 1
Typeahead.js версия 0.10.0 теперь использует отдельный компонент, называемый механизмом предложений для предоставления данных предложения. Механизм предложений, который поставляется с Typeahead.js, называется Bloodhound.
Следовательно, вы не можете "определить пульт без необходимости определять функцию набора данных".
Пример этой работы с удаленным источником данных (я обращаюсь к API TheMovieDb, попробуйте найти "Aliens", например) можно найти здесь:
http://jsfiddle.net/Fresh/UkB7u/
Код находится здесь:
// Instantiate the Bloodhound suggestion engine
var movies = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'http://api.themoviedb.org/3/search/movie?query=%QUERY&api_key=470fd2ec8853e25d2f8d86f685d2270e',
filter: function (movies) {
// Map the remote source JSON array to a JavaScript object array
return $.map(movies.results, function (movie) {
return {
value: movie.original_title
};
});
}
}
});
// Initialize the Bloodhound suggestion engine
movies.initialize();
// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
// Use 'value' as the displayKey because the filter function
// returns suggestions in a javascript object with a variable called 'value'
displayKey: 'value',
source: movies.ttAdapter()
});
Обратите внимание, как функция фильтра позволяет вам выбрать то, что вы хотите использовать в качестве предложения типа из нетривиального источника данных JSON.
Обновление для Typeahead 0.11.1
Для тех, кто использует новую версию typeahead, рабочий пример, основанный на исходном вопросе, можно найти здесь:
http://jsfiddle.net/Fresh/bbzt9hcr/
Что касается Typeahead 0.10.0, то новая версия (0.11.1) имеет следующие отличия:
- Функция "фильтр" была переименована в "transform".
- Не нужно вызывать инициализацию на объекте Bloodhound, и нам не нужно вызывать ttAdapter() при назначении его удаленному источнику.
- Теперь нужно указать шаблон (например,% QUERY) в хэшировании удаленных опций.