169 похожих чатов

Например в какой то библиотеке есть компонент для vue dropdown

и при клыке не в не его оно закрываеться, в самому компоненте они window.addeventlistener ставлять и смотрять если клык не на dropdown то закрывают его? я так понял?или как то делают другие реализации?:

19 ответов

21 просмотр

я не очень понял Вас, но в браузере можно смотреть эвенты навешанные на любой тег в хтмл

vue-click-outside посмотрите)

Так тоже делают.

Maks- Автор вопроса
Yusif Zourab
Так тоже делают.

А как еще делают? а то мне на ум только пришел навешать в компоненте слушатель в mounted

Maks
А как еще делают? а то мне на ум только пришел нав...

Не в mounted. А по факту активации dropdown, нет смысла лишний раз вешать глобальный обработчик. Так же по комментарию выше можно реализовать с помощью кастомной директивы. https://stackoverflow.com/questions/36170425/detect-click-outside-element

Maks- Автор вопроса
Yusif Zourab
Не в mounted. А по факту активации dropdown, нет с...

Ммм, можно в директив подать метод , и там его вызвать когда клык не в тому елементу что надо?)

Maks- Автор вопроса
Yusif Zourab
Да.

Но зачем создавать новый директив,? если можно прямо в компоненте (выпадного меню) написать обработчик тот же ?

Maks
Но зачем создавать новый директив,? если можно пря...

Смысл создания директивы в том чтобы была возможность переиспользования данного функционала множество раз не дублируя по факту код.

Maks- Автор вопроса
Yusif Zourab
Смысл создания директивы в том чтобы была возможно...

Ну тут раз только надо будет использувать код такой, 1 компонент выпадного меню, там написать обработчик такой, и просто испортировал компонент и все

Maks
Ну тут раз только надо будет использувать код тако...

Если вы предполагаете использования подобного функционала несколько раз, то лучше создать директиву, если нет, то пишите прямо в компоненте. Под "использованием несколько раз", я подразумеваю, использование этого функционала в нескольких компонентах. Сначала вы хотите на дропдаун повесить, потом на другое что-то и т.д.

Maks- Автор вопроса
Yusif Zourab
Если вы предполагаете использования подобного функ...

Ну я понял вас, смотрел про директивы), а если не нагружать обработчик в компоненте, то будет ли хорошо) на watch навешать isActiveComponent если он true (дроп даун открытий) то добавлять обработxbr document.body.addEventListener а если isActiveComponent = false то просто удалять обработчик, а то если повешать в mounted то по сути обработчик будет ловить клык на всей страницы)

Maks
Ну я понял вас, смотрел про директивы), а если не ...

Нет смысла усложнять код. Вы вешаете обработчик @click на кнопку и указываете функцию которая и и обрабатывает этот клик. В этой функции и вешаете глобальный обработчик + добавляете проверку, существует ли обработчик уже или нет.

Maks- Автор вопроса
Yusif Zourab
Нет смысла усложнять код. Вы вешаете обработчик @c...

Ну, а потом его как удалить?) когда закрыл меню?

Maks
Ну, а потом его как удалить?) когда закрыл меню?

Вы же вешаете глобальный обработчик, вот в нем и выполняете удаление самого себя когда операция будет выполнена успешно.

Maks- Автор вопроса
Yusif Zourab
Вы же вешаете глобальный обработчик, вот в нем и в...

А так можна? удалять обработчик в своем обрабочике?

Maks- Автор вопроса
Yusif Zourab
А почему нет.

Но я так понял надо его записать обработчик в перемену с data (Listener , и удалить через removeListener(this.Listener)? верно?

Maks
Но я так понял надо его записать обработчик в пере...

Тип того, только не в data, а лучше в methods, хотя тут как посмотреть.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта