javascript - 将 Algolia Instantsearch.js 与 Autocomplete.js 同步

标签 javascript autocomplete algolia instantsearch.js

我已经设置了 instantsearch.js 并创建了一个名为 index 的索引,如下所示:

{
  "cities": [
    "Boston"
  ],
  "company": "Pineapple",
  "countries": [
    "United States",
    "Canada"
  ],
  "description": "Best pineapple in the world",
  "highlight": true,
  "productTypes": [
    "Hard Drive"
  ],
  "category": "Hardware",
  "title": "Kiwi",
  "objectID": "5"
}

我还设置了 autocomplete.js 并创建了两个索引:locationcountry

这是位置:

{
  "cities": "San Francisco",
  "objectID": "91961120"
}

这是国家:

{
  "countries": "Germany",
  "objectID": "92132590"
}

我已经让这两个功能分开工作,但我不知道如何同步它们。

我正在寻找的行为是用户可以在 instantsearch.js 的帮助下输入搜索并使用 autocomplete.js 选择位置或国家/地区以过滤结果。或者,用户可以只使用 autocomplete.js 按国家/地区过滤结果。

我创建了一个 Codepen显示我的代码。谢谢。

我知道我使用的命名约定不是最好的,这些将会更改。

最佳答案

您需要确保 citiescountries 声明为 attributesForFaceting在您的主要索引中。然后,您需要在 instantsearch 的初始 searchParameters 上添加属性 facets。此属性将包含您要使用的方面的名称(cities & countries)。从现在开始,应该能够对您的属性应用分面过滤器。

为了同步这两个实例,您需要监听 autocomplete:selected 事件。您可能还需要监听输入的 change 事件,并在没有值时清除过滤器。要应用过滤器,您需要使用 the helper ,它是 instantsearch 用于管理状态的内部库。

我更新了你的 Codepen上面解释了变化。

关于javascript - 将 Algolia Instantsearch.js 与 Autocomplete.js 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509905/

相关文章:

javascript - 如何在使用 Algolia 每 4 次点击后添加一个 clearfix div?

jQuery Autocomplete 源属性作为 function(){} 非常慢

c# - 在 bot 框架中的 c# bot 中查询自动完成

javascript - Algolia + Woocommerce 类别的分层索引

javascript - 为什么我的正则表达式没有分割 '$$$' 分隔符?

mysql - 实现自动完成 : Redis vs. Memcached,我需要持久化吗?

javascript - 获取 Algolia 索引中的记录总数 - Javascript

javascript - 如何签署需要 UniversalXPConnect 权限的脚本或网页

javascript - 使用句点格式化输入字段

javascript - jQuery ajax 调用是否支持 PATCH?