Algolia Instantsearch - 在显示结果后添加回调?

Algolia Instantsearch - add a callback after results are displayed?

我有一个应用程序,允许用户搜索艺术品并建立自己的作品集。我想显示在 algolia 搜索中返回的一件艺术品是否包含在用户的投资组合中,但我似乎无法找到一种方法在向用户显示结果后进行回调。

是否可以为搜索结果添加回调?

我想你使用 instantsearch.js library 来显示结果。

那么有两种方法可以达到你想要的效果。

1) 使用transformData参数hits widget

参数接受回调并在那里传递结果。因此,您可以在显示结果之前修改结果 - 您可以根据记录是否应该突出显示来添加新参数。

示例:

search.addWidget(
  instantsearch.widgets.hits({
    container: '#hits-container',
    templates: {
      item: itemTemplate
    }, 
    transformData: {
      allItems: function (results) {
        console.log(results);

        // Modify results

        return results;
      }
    }
  })
);

2) 使用custom widget挂钩渲染回调

您可以编写一个简单的自定义小部件,其中您只指定 render 选项:

search.addWidget({
  render: function(data) {
    console.log(data);
  }
});

data 参数中,您将获得有关搜索的所有信息,包括助手、最后状态和最新结果。

您可以在小型 jsFiddle 中看到两种方法:https://jsfiddle.net/JanPetr/g54hzrzp/