Я хочу сделать элемент, на который я мог бы нажать, и, если я удерживал на нём курсор и зажатую клавишу мыши, то через секунду он удалялся. Метод для удаления есть: removeItem(id). Как реализовать зажатие и связать его с удалением?
Вот до mousedown я додумался. А дальше не особо понял, что делать. Был вариант сделать каждому элементу поле willDeleted = false, затем на @mousedown="holdAndClick(data)"
, и ещё добавить @mouseup="data.willDeleted = false", но оно не работает. Подразумевалось, что пока я зажимаю клавишу, willDeleted = true, а где-то в очереди ждёт setTimeout; а если отпускаю, то willDeleted = false, а setTimeout проходит, проверяет willDeleted и (не)удаляет элемент
be9st, ага, ты в одном потоке все держишь, я так понял. Когда я замечаю подобное усложнение компонента, я разбиваю его на еще один. Что позволяет обрабатывать каждый случай и не искать в цикле, о чем речь. А теперь по сути, если каждый элемент, на который ты кликаешь ты сделаешь компонентом, то:
1. Ты сможешь использовать счетчик в его data.
2. Засекать как-то так.
И если тебе не критично, когда именно будет удален элемент, то сравнивать время на mouseup событии. А если тебе надо, чтобы ровно с секунды триггерилось и удалялось, то в setTimeout, как у тебя, и при этом можно хранить состояние pressed, скажем, и если оно все еще true на момент завершения timout-а, всплывать метод для родителя.
Арсений Матыцин, с performance.now() это крутой метод, а вот если я хочу, если кнопка была зажата менее секунды, то она не удалялась, а когда проходит больше секунды, то она удалялась?