我已经设置了 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 并创建了两个索引:location
和 country
。
这是位置
:
{
"cities": "San Francisco",
"objectID": "91961120"
}
这是国家
:
{
"countries": "Germany",
"objectID": "92132590"
}
我已经让这两个功能分开工作,但我不知道如何同步它们。
我正在寻找的行为是用户可以在 instantsearch.js 的帮助下输入搜索并使用 autocomplete.js 选择位置或国家/地区以过滤结果。或者,用户可以只使用 autocomplete.js 按国家/地区过滤结果。
我创建了一个 Codepen显示我的代码。谢谢。
我知道我使用的命名约定不是最好的,这些将会更改。
最佳答案
您需要确保 cities
和 countries
声明为 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/