无法查看 Typeahead/Bloodhound 的所有匹配结果
Unable to view all matching results with Typeahead/Bloodhound
我正在使用 Typeahead/Bloodhoud 进行公司搜索,但自动完成部分没有显示足够的匹配项。
------------搜索---------
我应该至少看到 5 个结果,因为限制是 5 个。
------------ Ajax响应---------
Typeahead JS
companies = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.nonword(d.id);
},
queryTokenizer: Bloodhound.tokenizers.nonword,
remote: 'access/companies?q=%QUERY'
});
companies.initialize();
$('#companySearch').typeahead({
highlight: true,
source: companies.ttAdapter(),
updater: selectCompany
});
如何确保我的所有结果都按预期显示?我一直在挖掘 documentation/source 代码寻找我一定忽略了的选项,并且一直在努力想出任何选项。
您需要在预输入调用中添加 'displayKey'。
在您的情况下,Displaykey 应该是 'name'。
像这样:
// instantiate the typeahead UI
$( '#companySearch').typeahead(null, {
displayKey: 'name',
source: companies.ttAdapter()
});
在这种情况下,我只是想使用 typeahead 作为我的 bootstrap 风格的自动完成菜单。这意味着我不想让我的 JS 为匹配结果做任何类型的逻辑。有一个未记录的(在本 post 时)配置设置,您可以使用名为 matcher
的配置设置,它允许您自定义预输入过滤器结果的方式。我只是简单地覆盖了它,以便它返回每个结果。
$('#companySearch').typeahead({
highlight: true,
minLength: 1,
source: companies.ttAdapter(),
updater: selectCompany,
matcher: function (t) {
return t;
}
});
我正在使用 Typeahead/Bloodhoud 进行公司搜索,但自动完成部分没有显示足够的匹配项。
------------搜索---------
我应该至少看到 5 个结果,因为限制是 5 个。
------------ Ajax响应---------
Typeahead JS
companies = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.nonword(d.id);
},
queryTokenizer: Bloodhound.tokenizers.nonword,
remote: 'access/companies?q=%QUERY'
});
companies.initialize();
$('#companySearch').typeahead({
highlight: true,
source: companies.ttAdapter(),
updater: selectCompany
});
如何确保我的所有结果都按预期显示?我一直在挖掘 documentation/source 代码寻找我一定忽略了的选项,并且一直在努力想出任何选项。
您需要在预输入调用中添加 'displayKey'。
在您的情况下,Displaykey 应该是 'name'。
像这样:
// instantiate the typeahead UI
$( '#companySearch').typeahead(null, {
displayKey: 'name',
source: companies.ttAdapter()
});
在这种情况下,我只是想使用 typeahead 作为我的 bootstrap 风格的自动完成菜单。这意味着我不想让我的 JS 为匹配结果做任何类型的逻辑。有一个未记录的(在本 post 时)配置设置,您可以使用名为 matcher
的配置设置,它允许您自定义预输入过滤器结果的方式。我只是简单地覆盖了它,以便它返回每个结果。
$('#companySearch').typeahead({
highlight: true,
minLength: 1,
source: companies.ttAdapter(),
updater: selectCompany,
matcher: function (t) {
return t;
}
});