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
的函数。该功能不带参数。