Algolia动态方面的选择

时间:2017-05-13 19:49:24

标签: javascript algolia instantsearch.js

问题如下。 我们使用algolia instantsearch。 每个产品都有卖家。当前用户订阅了一些卖家。用户应该有可能通过订阅的卖家和那些没有订阅的卖家来过滤产品。 为此,我尝试使用小部件切换。在那里我为当前用户设置了一个被逗号分隔的卖家列表,用逗号分隔为开关选项

values: {
  on: '37,41,67',
  off: '45,56',
},

但只有在我只指定一个卖家时它才有效。并且完成默认选项。 我试过使用numericRefinementList小部件

options: [
  { label: 'On', value: '37,41,67' },
  { label: 'Off', value: '45,56' },
],

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

1 个答案:

答案 0 :(得分: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);
      });
    });
  },
});

"seller"是包含卖家的记录中的属性名称。它应该在Algolia仪表板中配置为构面。

sellerList是您的索引中"seller"属性中使用的卖家标识符列表。

此自定义窗口小部件使用jsHelper,您可以在其中指定搜索的参数。您还可以在文档中找到有关the custom widgets的更多信息。

相关问题