我对typeahead.js
使用以下代码var countries = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.en_name);
},queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 100,
remote: {
url: 'http://domain.com/json.php?action=countries',
}
});
countries.initialize();
$('.lang').typeahead(null, {
name: 'countries',
displayKey: 'en_name',
source: countries.ttAdapter()
});
json是:
[{"id":"1","cz_name":"\u010de\u0161tina","en_name":"Czech"},{"id":"2","cz_name":"angli\u010dtina","en_name":"English"},{"id":"3","cz_name":"n\u011bm\u010dina","en_name":"German"}]
当我开始输入任何内容时,即使是与任何所需结果都不匹配的内容,我也会得到所有建议。
当我使用时:
var countries = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.en_name);
},queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 100,
local: [{"id":"1","cz_name":"\u010de\u0161tina","en_name":"Czech"},{"id":"2","cz_name":"angli\u010dtina","en_name":"English"},{"id":"3","cz_name":"n\u011bm\u010dina","en_name":"German"}]
});
它运作得很好。我做错了什么?
答案 0 :(得分:0)
我在这里找到了答案:https://github.com/twitter/typeahead.js/issues/248
在对此进行更多思考之后,我意识到必须负责远程api才能返回已过滤的结果,而不是返回结果。由于我使用的是静态json数据源,因此每次使用预取时我的返回结果都是相同的。