当搜索词在Algolia中为空时,如何防止显示搜索结果?

时间:2018-08-21 02:32:41

标签: algolia

我遵循了他们的tutorial,但是即使页面第一次被加载并且搜索框的内容为空,它也始终显示搜索结果的页面。我尝试添加queryHook并仅在该术语不为空白时进行搜索,但是在加载页面时它仍显示搜索结果。实际上,queryHook甚至在第一次加载时都没有被调用。仅当您在搜索框中键入时才调用它。 除非用户开始输入文字,否则如何隐藏搜索结果?

https://community.algolia.com/instantsearch.js/v2/widgets/searchBox.html#usage

这有效,但是我认为这不是正确的方法,因为它仍然在空文本框中进行搜索。同样,当您通过单击右侧的X重设搜索词时,它也不会隐藏结果(因为它不会调用queryHook)。

    <main id="results" class="collapse">
        <div id="hits"></div>
        <div id="pagination"></div>
    </main>

  # CoffeeScript
  search.addWidget(
    instantsearch.widgets.searchBox({
      container: '#search-input',
      queryHook: (term, searchFunction) ->
        console.log "term = #{term}"
        if term
          $('#results').show()
        else
          $('#results').hide()
        searchFunction(term)

1 个答案:

答案 0 :(得分:2)

您可以使用Helper.js library,它已经是InstantSearch的一部分。在您的情况下,请在实例化搜索时检查查询长度:

var search = instantsearch({
    // other search parameters
    searchFunction: function(helper) {
    if (helper.state.query.length === 0) {
        return; // do not trigger search
    }

    helper.search(); // trigger search
  }
});