Как повесить обработчик событии вне зоны компонента?

У меня есть компонент select и проблема возникла, я не пойму как вне зоны компонента если пользователь чекнул, то срабатывало событие
Мой пример
<template>
    <div class="select-app">
        <input type="text" class="field-form" :value="name" @click="onClick" :placeholder="`Выберите ${placeholder.toLowerCase()}`">
        <transition name="fade">
            <ul v-show="disabled">
                <li v-for="option in options" @click="checkOption(option)" :class="{ active: option.id === id }">
                    <span>{{ option.name }}</span>
                </li>
            </ul>
        </transition>
    </div>
</template>

<script>
    export default {
        name: "BaseSelect",
        props: ["options", "placeholder"],
        data() {
            return {
                name: null,
                id: null,
                disabled: false
            }
        },
        methods: {
            onClick() {
                return this.disabled = this.disabled !== true;
            },
            checkOption(value) {
                this.name = value.name;
                this.id = value.id;
                this.disabled = false;
            }
        },
        created() {
            document.addEventListener("onclick", this.onClick)
        }
    }
</script>

Я думал что на дом повесить обработчик типо document.addEventListener("onclick", this.onClick) Но почему то не сработало
  • Вопрос задан
  • 308 просмотров
Решения вопроса 2
Vlad_IT
@Vlad_IT
Front-end разработчик
Не onclick а click
document.addEventListener("click", this.onClick)
Ответ написан
muzikant777
@muzikant777
PHP/Vue разработчик
Есть ещё всякие директивы типа https://github.com/ndelvalle/v-click-outside
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы