无法查看 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;
    }
});