Algolia动态方面的选择

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)

但它不起作用也可以有人提出解决方案吗?

bob*_*ito 6

这不是默认小部件所涵盖的行为.但是,您可以创建可以切换过滤器列表的自定义小部件.让我给你举个例子:

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这也让你指定搜索的parmae​​ters.您还可以在doc中找到有关自定义小部件的更多信息.