我正在尝试实现“加载更多”功能,而不是Coveo中的基本分页。
我的按钮代码如下。只有控制台日志有效,代码不会将ajax发送到服务。

我已经在Coveo文档中搜索了加载更多按钮/功能的信息,但是没有找到任何按钮/功能。

//html code of button
<div data-firstres="0" class="load_more_btn">Load More</div>

//js
$('.load_more_btn').on('click', function() {
    var this_btn = $(this);
    var firstResult = this_btn.attr('data-firstres');
    var q = $('.magic-box-input input').val();
    console.log(q);
    var new_res = parseInt(firstResult) + 10;
    this_btn.attr('data-firstres', new_res);
    console.log(new_res);
    var root = document.body;
    Coveo.SearchEndpoint.endpoints['default'] = new Coveo.SearchEndpoint({
      restUri: 'https://platform.cloud.coveo.com/rest/search',
      queryStringArguments: {
          organizationId: 'replaced_val',
          numberOfResults: '10',
          firstResult:firstResult,
          q:q
        },
      accessToken: acc_token,
    });
    Coveo.init(root);
});

最佳答案

首先,您的代码将无法满足您的要求。

Coveo.init仅应调用一次,它用于初始化搜索界面。 SearchEndpoint只能在初始化之前设置一次,而不能在每次单击“ LoadMore”之后设置。

然后,您应该使用JavaScript Search EventsJavaScript API calls更改查询。

因此,对于您的用例,您可以利用CoveoResultList组件的displayMoreResults method

您还可以按照ShowMore中Coveo人员创建的JavaScript Search Framework Custom Components repository定制组件的说明进行操作。这是定制组件调用的displayMoreResults()方法的相关部分:

public loadMore() {
  this.resultList ? this.resultList.displayMoreResults(this.options.count || 10) : null;
}

public get resultList(): ResultList | null {
  const resultListElement = $$(this.root).find('.CoveoResultList');
  if (resultListElement) {
    return get(resultListElement) as ResultList;
  }
  return null;
}

10-04 23:25