无法使用Typeahead / Bloodhound查看所有匹配的结果

时间:2015-02-09 18:10:33

标签: javascript jquery twitter-typeahead bloodhound

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

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

enter image description here

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

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

enter image description here

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
});

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

2 个答案:

答案 0 :(得分:1)

在这种情况下,我只想使用typeahead作为我的bootstrap样式自动完成菜单。这意味着我不想让我的JS为匹配结果做任何逻辑。这是一个未记录的(在本文发布时)配置设置,您可以使用名为matcher的设置,它允许您自定义预先过滤器结果的方式。我只是覆盖了它,以便它返回每一个结果。

$('#companySearch').typeahead({
    highlight: true,
    minLength: 1,
    source: companies.ttAdapter(),
    updater: selectCompany,
    matcher: function (t) {
        return t;
    }
});

答案 1 :(得分:0)

您需要添加一个' displayKey'在预先打电话中。
Displaykey应该是' name'在你的情况下。
像这样:

// instantiate the typeahead UI
$( '#companySearch').typeahead(null, {
  displayKey: 'name',
  source: companies.ttAdapter()
});