【问题标题】:How do I hide results on an empty query in Laravel + Vue?如何在 Laravel + Vue 中隐藏空查询的结果?
【发布时间】:2017-08-23 17:10:47
【问题描述】:

使用 Vue 运行 Laravel Scout + Algolia。一切正常,搜索又好又快。但是,我想隐藏空查询的结果,而不是显示整个索引。

Algolia 提供了这个解决方案:

var search = instantsearch({
  [...],
  searchFunction: function(helper) {
    var searchResults = $('.search-results');
    if (helper.state.query === '') {
      searchResults.hide();
      return;
    }
    helper.search();
    searchResults.show();
  }
}

这是我的搜索:

//search.blade.php
    <ais-index app-id="{{ config('scout.algolia.id') }}"
               api-key="{{ env('ALGOLIA_SEARCH') }}"
               index-name="dev_users">
        <ais-search-box placeholder="Zoek een gebruiker" :autofocus="true"></ais-search-box>
        <ais-results></ais-results>
<script>
    new Vue({
        el: "#search",
    })
</script>

这是我的 app.js

import InstantSearch from 'vue-instantsearch';
Vue.use(InstantSearch);

我不知道如何实现 Algolia 手册中的代码。你们能指出我正确的方向吗?

提前致谢。

【问题讨论】:

    标签: laravel vue.js laravel-5.4 algolia


    【解决方案1】:

    以下是如何根据当前查询使用 Vue InstantSearch 隐藏结果:

    <template>
      <ais-index :search-store="searchStore">
        <ais-input></ais-input>
        <results v-show="searchStore.query.length > 0"></results>
      </ais-index>
    </template>
    
    <script>
    import { createFromAlgoliaCredentials } from 'vue-instantsearch';
    
    const searchStore = createFromAlgoliaCredentials('<appId>', '<apiKey>');
    
    export default {
      data() {
        searchStore
      }
    }
    </script>
    

    【讨论】:

    • 有没有办法配置 Vue InstantSearch 在查询为空时不触发请求?我认为在每次页面加载时对空字符串进行搜索有点浪费。
    • 您可以在加载主组件时再次stop() 搜索存储和start() 它。这里的关键是不要打电话给refresh(),它会调用Algolia。让我知道这是否有帮助@HelenChe
    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2015-03-18
    • 2018-08-28
    • 2015-05-30
    • 2013-06-08
    相关资源
    最近更新 更多