Używam Twittera typeahead.js 0.10.5 jako silnika sugestii. Działa wspaniale, z jednym wyjątkiem nie mogę uporządkować listy sugestii tak, jak chcę.Sortuj sugestie dotyczące typów z dokładnym wprowadzeniem na górę
Jako przykład:
var data =[{"id":1,"value":"no need"},
{"id":2,"value":"there is no need"},
{"id":3,"value":"in the need of"},
{"id":4,"value":"all I need"},
{"id":5,"value":"need"},
{"id":6,"value":"needs"},
{"id":7,"value":"all he needs"},
{"id":8,"value":"he needs"},
{"id":9,"value":"they need"},
{"id":10,"value":"you need"}]
var suggestion = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: data,
limit: 20
});
suggestion.initialize();
$('.typeahead').typeahead({
hint: true,
autoselect: true,
highlight: true,
minLength: 1
},
{
name: 'suggestion',
displayKey: 'value',
source: suggestion.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'no suggestion in this map',
'</div>'
].join('\n'),
suggestion: Handlebars.compile('<p><span class="suggestion-text">{{value}}</span></p>')
}
Po wpisaniu „trzeba” zrobić się sugestie zamówionych przez pozycję w tablicy, ale chciałbym mieć to sortowane według danych wejściowych, co oznacza, że kolejność powinna być „Need "," potrzebuje "," wszystko czego potrzebuję "... Kiedy wpisujesz" on ", powinno być" on potrzebuje "," wszystko czego potrzebuje "," wszystko czego potrzebuję "itd.
Wiem, że Bloodhound ma sorter opcja, ale nie wiem, jak go użyć w tej konkretnej sytuacji.
Działa to dokładnie tak, jak tego chciałem! – lunacafu
Czy ktoś może wyjaśnić dwie wartości przekazywane do funkcji (a, b)? Uruchomiłem dziennik konsoli i "a" okazało się obiektem JSON, ale nie mogłem dowiedzieć się, co to jest "b". –
Jedyną różnicą między a i b jest to, że b będzie następnym obiektem w tablicy (bezpośrednio po) – NoDiced