istantsearch.js的infiniteHits小部件附加了一个“显示更多结果”按钮,该按钮可加载其他结果。
我需要动态地触发此功能,隐藏按钮,因为我想在滚动结尾处获得更多结果。

因此,我尝试使用连接器(调用InfiniteHitsRenderingOptions.showMore()),但是我必须仅针对这一小功能重写整个窗口小部件。

所以我的问题是:


如何在默认的infiniteHits小部件中加载更多结果?
为什么如果我尝试使用$(".ais-infinite-hits--showmore button").trigger("click")没有任何反应?


提前致谢。

最佳答案

infiniteHits几乎没有逻辑。这是我要做的:

// custom widget
var customInfiniteHits = instantsearch.connectors.connectInfiniteHits(function(options, isFirstRendering) {
  var showMore = options.showMore;
  var hits = options.hits;
  var containerNode = otpions.widgetParams.containerNode;

  if(isFirstRendering) {
    bindScroll(showMore);
  }

  containerNode.html(
    hits.map(function(hit) {
      return '<div>' + hit._highlightResult.name.value + '</div>';
    })
  );
});

// Usage
search.addWidget(
  customInfiniteHits({
    containerNode: $('#custom-infinite-hits-container'),
  })
);


bindScroll是将侦听滚动位置并调用提供的showMore的函数。该功能不带参数。

10-08 19:43