Javascript 带远程数据源的Typeahead.js
我有一个json文件,可以输出Javascript 带远程数据源的Typeahead.js,javascript,jquery,typeahead.js,typeahead,twitter-typeahead,Javascript,Jquery,Typeahead.js,Typeahead,Twitter Typeahead,我有一个json文件,可以输出 {"data": ["A", "B", "C", "D", ...]} 我的typeahead.js脚本如下所示 var engine = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), queryTokenizer: Bloodhound.tokenizers.whitespace, prefetch: { ur
{"data": ["A", "B", "C", "D", ...]}
我的typeahead.js脚本如下所示
var engine = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: 'list.json',
filter: function(list) {
return $.map(list, function(person) { return { name: person }; });
}
}
});
engine.initialize();
$('.typeahead').typeahead(null, {
displayKey: 'name',
source: engine.ttAdapter()
});
typeahead.js脚本已正确激活,但它仅将数据源解释为一个逗号分隔的项,而不是单独的项。因此,它没有“搜索”A、B、C等元素,而是给了我一个建议A、B、C
我的剧本怎么了?我已经在第二次会议上学习了这些例子
如果我在datumTokenizer、filter和displayKey中将name都更改为value,它将不会得到任何项,而只会得到未定义的输出。我很确定预取中的过滤器选项不能正常工作。在过滤器函数中,您正在迭代对象的属性:
{"data": ["A", "B", "C", "D", ...]}
在本例中,您仅对数据进行迭代。
对于迭代数据中的项,应该传递
列表.数据
到过滤器函数。这样:
var engine = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: 'list.json',
filter: function(list) {
return $.map(list.data, function(person) { return { name: person }; });
}
}
});
答案给出了一个遥远的例子,可能会对你有所帮助。