コード スニペットを次に示します。
var bloodhound_obj = new Bloodhound({
datumTokenizer: function(data) {
var name = Bloodhound.tokenizers.whitespace(data.name);
var id = Bloodhound.tokenizers.whitespace(data.id);
return id.concat(name);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
sorter: function(a, b) {
if (a.id < b.id) {
return -1;
}
else if (a.id > b.id) {
return 1;
}
else return 0;
},
local: _data,
limit: 10
});
bloodhound_obj.initialize();
$("#autocomplete").typeahead({
hint: false,
highlight : true
}, {
displayKey: function(d) {
return d.name + " (" + d.id + ")";
},
source: bloodhound_obj.ttAdapter(),
});
現状では、提案は「id」でソートされており、ソートがクエリに依存するように変更したいと思います。$("#autocomplete").typeahead("val") (ソーター関数内) を含めようとしましたが、これは遅く、当面の問題にはやり過ぎのようです。