Я использую ais-instant-search
и ais-state-results
для отображения своих данных. Результат прячу до query.length > 0
. Это работает, но если я не ввожу строку поиска, всегда отображается сообщение. Ниже мой код и скриншот:
<ais-state-results>
<p slot-scope = "{ query, hits }" v-if = "!hits.length">
Not found for: <q>{{ query }}</q>
</p>
<template v-else slot-scope = "{ query }">
<ais-hits v-if = "query.length > 0">
<template slot = "item"
slot-scope = "{ item }"
>
<h1>
<ais-highlight
:hit = "item"
attribute = "name"
/>
</h1>
<ul>
<li>{{ item.price }}</li>
</ul>
</template>
</ais-hits>
</template>
</ais-state-results>
У меня еще не было решения для этого :(
Виджет <ais-state-results>
содержит резервный контент, который отображается, когда слот по умолчанию пуст (это скриншот, который вы дали). Оба условия, которые вы написали в своем примере, становятся ложными после запуска приложения. Поскольку внутри слота ничего не отображается, срабатывает слот по умолчанию. Вы можете решить эту проблему с помощью пустого div
, когда ни одно из условий не выполняется. Вот пример:
<ais-state-results>
<template slot-scope = "{ query, hits }">
<!-- First condition -->
<p v-if = "!hits.length">Not found for: <q>{{ query }}</q></p>
<!-- Second condition -->
<ais-hits v-else-if = "query" />
<!-- Fallback condition -->
<div v-else />
</template>
</ais-state-results>
Вы можете найти живой пример на КодПесочница.
Вам удалось решить вашу проблему?