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

前端之家收集整理的这篇文章主要介绍了javascript – 如果查询为空,如何将Algolia设置为不返回任何结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Algolia提供的 instantsearch.js库.

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

然而,Algolia documentation指出:

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

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

这是我目前的代码

  1. <script type="text/javascript" src="http://cdn.jsdelivr.net/instantsearch.js/1/instantsearch.min.js"></script>
  2. <script type="text/javascript">
  3.  
  4. window.onload = function ()
  5. {
  6.  
  7. function getTemplate(templateName) {
  8. return document.getElementById(templateName + '-template').innerHTML;
  9. }
  10.  
  11. var search = instantsearch({
  12. appId: '{{config["ALGOLIA_APPLICATION_ID"]}}',apiKey: '{{config["ALGOLIA_API_KEY"]}}',indexName: '{{config["ALGOLIA_INDEX_NAME"]}}',urlSync: true
  13. });
  14.  
  15. search.addWidget(
  16. instantsearch.widgets.searchBox({
  17. container: '#search-input'
  18. })
  19. );
  20.  
  21. search.addWidget(
  22. instantsearch.widgets.hits({
  23. container: '#hits-container',hitsPerPage: 10,templates: {
  24. item: getTemplate('hit'),empty: getTemplate('no-results')
  25. }
  26. })
  27. );
  28.  
  29. search.start();
  30. };
  31.  
  32. </script>

解决方法

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

这也是官方网站上的documented.

猜你在找的JavaScript相关文章