【问题标题】:How do you prevent search results from showing when the search term is empty in Algolia?当搜索词在 Algolia 中为空时,如何防止显示搜索结果?
【发布时间】:2018-08-22 00:50:13
【问题描述】:

我关注了他们的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)

【问题讨论】:

    标签: algolia


    【解决方案1】:

    您可以使用 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
      }
    });
    

    【讨论】:

    • OK 在页面第一次加载时可以使用,但是X - Clear the Search Results 仍然不起作用,并且当您删除搜索词时,结果仍然会列出。你会认为初始状态默认是没有结果。
    • 当用户手动删除搜索词时,我使用了我的解决方案和您的解决方案的组合来隐藏结果,但 X 清除按钮仍然不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多