Я работаю над проектом Nuxt.js с поиском Algolia. У меня все работает, кроме закрытия раскрывающегося списка поиска при нажатии вне поля. Я просмотрел так много ресурсов, и ничего не хочет работать.
Вот где я посмотрел:
Обнаружить щелчок вне элемента в nuxt
Обнаружить щелчок за пределами элемента
Обнаружение щелчка вне элемента на Vue 3
Кто-нибудь сможет помочь, пожалуйста?
Вот текущий код, который у меня есть:
плагины / click-outside.js
import Vue from 'vue';
Vue.directive('click-outside', {
bind: function (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
console.info(el);
// here I check that click was outside the el and his childrens
if (!(el == event.target || el.contains(event.target))) {
// and if it did, call method provided in attribute value
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent)
},
unbind: function (el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
},
});
index.vue
<template>
<div class = "hello">
<div v-click-outside = "closeDropdown">
Hello
</div>
</div>
</template>
<script>
methods: {
closeDropdown() {
console.info("Clicked outside closeDropdown!");
},
}
</script>
Я отредактировал содержание выше, спасибо.
Код, содержащий раскрывающийся список поиска, также будет весьма полезен. В идеале вы должны предоставить образец codeandbox, иначе трудно помочь вам найти решение.
Я сделал что-то на 99% похожее на то, что у меня было в моем проекте: codeandbox.io/s/thirsty-cerf-vpply Мне удалось правильно получить щелчок вне коробки. (Хотя мой собственный проект console.info по какой-то причине все дважды: /) Возвращаюсь к SandBox .... Я бы хотел очистить ввод и скрыть результаты при щелчке вне поля, но я не уверен, что я м делаю не так :(





Не могли бы вы предоставить код, к которому вы пытаетесь применить это?