Скрыть сообщение по умолчанию виджета ais-state-results - PullRequest
1 голос
/ 28 мая 2019

Я использую ais-instant-search и ais-state-results для отображения моих данных. Я скрываю результат до query.length > 0. Это работает, но если я не ввожу строку поиска, она всегда показывает сообщение. Ниже приведены мой код и скриншот:

enter image description here

<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>

1 Ответ

2 голосов
/ 10 июня 2019

Виджет <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>

Вы можете найти живой пример на CodeSandbox .

...