3

我正在使用 Typeahead/Bloodhoud 进行公司搜索,但自动完成部分没有显示足够的匹配项。

- - - - - 搜索 - - - - -

在此处输入图像描述

我应该看到至少 5 个结果,因为限制是 5。

---------- Ajax 响应 ----------

在此处输入图像描述

预输入 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
});

如何确保我的所有结果都按预期显示?我一直在挖掘文档/源代码,寻找我必须忽略的选项,并且一直在努力想出任何选项。

4

2 回答 2

1

在这种情况下,我只是想使用 typeahead 作为我的引导式自动完成菜单。这意味着我不想让我的 JS 来做任何类型的逻辑来匹配结果。有一个未记录的(在撰写本文时)配置设置,您可以使用matcher它来自定义 typeahead 过滤器的结果。我只是覆盖了它,以便它返回每个结果。

$('#companySearch').typeahead({
    highlight: true,
    minLength: 1,
    source: companies.ttAdapter(),
    updater: selectCompany,
    matcher: function (t) {
        return t;
    }
});
于 2015-02-25T00:12:13.357 回答
0

您需要在 typeahead 调用中添加一个“displayKey”。
在您的情况下,Displaykey 应该是“名称”。
像这样的东西:

// instantiate the typeahead UI
$( '#companySearch').typeahead(null, {
  displayKey: 'name',
  source: companies.ttAdapter()
});
于 2015-02-23T04:38:56.040 回答