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

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

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

19 ответов

12 просмотров

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

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, хотя тут как посмотреть.

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

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

Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
48
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Мне тут приспичило встроить в программу форматировние текста SQL, расставить переносы строк и отступы так, чтобы лучше читалось. Я что-то свое изобразил, оно после ключевых сл...
Sergey Bodrov
11
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Добрый день. Опять снова хочу обратиться к вам за помощью. После создания проэкта stack new, lazy.nvim + nvim-lspconfig/haskell-tools + hlint, ormolu из mason + hls из ghcup ...
Nannk
8
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Карта сайта