1 javascript algolia instantsearch.js
问题如下.我们使用algolia instantsearch.每个产品都有卖家.当前用户订阅了一些卖家.用户应该有可能通过订阅的卖家和那些没有订阅的卖家来过滤产品.为此,我尝试使用小部件切换.在那里我为当前用户设置的子列表卖家列表,用逗号分隔为开关选项
values: {
on: '37,41,67',
off: '45,56',
},
Run Code Online (Sandbox Code Playgroud)
但只有在我只指定一个卖家时它才有用.并且完成默认选项.我试过使用numericRefinementList小部件
options: [
{ label: 'On', value: '37,41,67' },
{ label: 'Off', value: '45,56' },
],
Run Code Online (Sandbox Code Playgroud)
但它不起作用也可以有人提出解决方案吗?
这不是默认小部件所涵盖的行为.但是,您可以创建可以切换过滤器列表的自定义小部件.让我给你举个例子:
const sellerList = [];
// this uses jQuery
const toggleButton = $('div.toggleSellers');
const search = instantsearch(/* parameters and credentials */);
search.addWidget({
getConfiguration: function() {
return {disjunctiveFacets: ['seller']};
},
init: function(options) {
const helper = options.helper;
// Here you have to bind the event that will toggle seller
// For example using the `toggleButton` and a click event
toggleButton.on('click', function() {
sellerList.forEach(function(seller) {
helper.toggleRefinement('seller', seller);
});
});
},
});
Run Code Online (Sandbox Code Playgroud)
"seller"是包含卖家的记录中的属性名称.它应该在Algolia仪表板中配置为构面.
sellerList是"seller"索引中属性中使用的卖家标识符列表.
这个自定义部件使用jsHelper这也让你指定搜索的parmaeters.您还可以在doc中找到有关自定义小部件的更多信息.