typeahead.js - 提前输入/猎犬 : Removing duplicates from local

标签 typeahead.js twitter-typeahead bloodhound

我不清楚如何使用 Bloodhound 中的 dupDetector 参数删除重复项。

我正在使用 0.11.1 版

从具有如下记录的数据库中提取数据集:

building_name  room  department
Rooney         123   English
Rooney         456   Chemistry
Rooney         987   Chemistry
Meyer          65    Dog Walking
Flatiron       498   Weaving

我的猎犬电话:

var buildingName = new Bloodhound({
      datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
      queryTokenizer: Bloodhound.tokenizers.whitespace,
      local: buildingJson,
      dupDetector: function(remoteMatch, localMatch) {
        return remoteMatch.building_name === localMatch.building_name;
      }
});

我正在寻找的功能是能够搜索 Rooney、456 或 English,结果集只显示一个 building_name,因为所有三个结果的建筑物名称都是相同的。目前,它正在返回列表中的所有三个记录。

这可能吗?

我能找到的关于 dupDetector 的所有信息都是比较远程和预取。我只使用一个数据源,它只有多个同名记录。

最佳答案

不幸的是,dupDetector 仅适用于远程或预取数据源。

本地数据源存在问题,因此您的 dupDetector 无法正常工作。它永远不会被调用。尝试使用 console.log 来查看。

https://github.com/twitter/typeahead.js/issues/606#issuecomment-51221195

看起来你无论如何都是从 JSON 加载的,所以为什么不把它弹出到你的“本地”服务器上并改为“预取”它。否则看起来您将不得不手动完成。

var buildingName = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: ../buildingJson.json,
    dupDetector: function(remoteMatch, localMatch) {
        return remoteMatch.building_name === localMatch.building_name;
  }
});

关于typeahead.js - 提前输入/猎犬 : Removing duplicates from local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397907/

相关文章:

javascript - Bloodhound:Twitter Typeahead 没有显示从远程/ajax 获取的所有结果

javascript - Typeahead.js 不显示预取数据的自定义模板

ruby-on-rails - Uncaught ReferenceError : Bloodhound is not defined

javascript - 将 Knockout 与 Typeahead.js 和 Bloodhound.js v0.10 结合使用

twitter-bootstrap - 集成 bootstrap-tagsinput、boostrap3-typeahead 和 Bloodhound 的问题

javascript - 为什么 typeahead 匹配句点?

jquery - 提前输入 Bloodhound POST 请求

loading - twitter typeahead + bloodhound 再利用 : how do I show a loading gif for the ajax request?

javascript - typeahead.js 或 Bloodhound 不适合我

javascript - 使用 pg_search 提前输入 Bloodhound Rails