微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如果查询为空,如何将Algolia设置为不返回任何结果?

我正在使用Algolia提供的 instantsearch.js库.

我想要的行为是:如果访问者没有在搜索框中输入任何内容,则不会返回任何结果.

然而,Algolia documentation指出:

If no query parameter is set,the textual search will match with all
the objects.

是否可以在使用instantsearch.js的同时更改此行为?

这是我目前的代码

<script type="text/javascript" src="http://cdn.jsdelivr.net/instantsearch.js/1/instantsearch.min.js"></script>
<script type="text/javascript">

    window.onload = function ()
    {

        function getTemplate(templateName) {
            return document.getElementById(templateName + '-template').innerHTML;
        }

        var search = instantsearch({
            appId: '{{config["ALGOLIA_APPLICATION_ID"]}}',apiKey: '{{config["ALGOLIA_API_KEY"]}}',indexName: '{{config["ALGOLIA_INDEX_NAME"]}}',urlSync: true
        });

        search.addWidget(
            instantsearch.widgets.searchBox({
                container: '#search-input'
            })
        );

        search.addWidget(
            instantsearch.widgets.hits({
                container: '#hits-container',hitsPerPage: 10,templates: {
                    item: getTemplate('hit'),empty: getTemplate('no-results')
                }
            })
        );

        search.start();
    };

</script>

解决方法

您可以使用searchFunction并检查基础帮助程序状态以检查查询是否为空.基于此,您可以显示/隐藏搜索结果div.
var search = instantsearch({
  [...],searchFunction: function(helper) {
    var homePage = $('.home-page');
    var searchResults = $('.search-results');
    if (helper.state.query === '') {
      // empty query string -> hide the search results & abort the search
      searchResults.hide();
      homePage.show();
      return;
    }
    // perform the regular search & display the search results
    helper.search();
    homePage.hide();
    searchResults.show();
  }
}

这也是官方网站上的documented.

原文地址:https://www.jb51.cc/js/159736.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐