Задать вопрос
@Nik_Set_7

Как сделать touch на vue.js?

В приложении требуется использовать touch для появления боковых меню с главного меню. Нашёл библиотеку на основе hammer.js:
https://github.com/vuejs/vue-touch/tree/next

Но у неё есть некоторые проблемы, которые пока не понятно решить:
- touch пока работает на header, хотя событие со свайпом навешено на весь блок со страницей
- не понятно, как блокировать одни touch, чтобы работали другие: например при проведении на блоке 1 должен появиться блок 2, а не боковое меню

Поэтому вопрос: как фиксируется свайп и другие touch на vue.js 2 ?

UPD:
1. Ни одна библиотека не подошла: они просто не работали. Возможно стоит больше времени потратить на чистый Hammer.js
2. Единственная библиотека, которая подошла - это TouchSwipe 1.6
https://github.com/mattbryson/TouchSwipe-Jquery-Plugin
Это jQuery библиотека, которую можно установить через npm и потом подключить через require
Правда есть две проблемы, которые сразу были замечены:
- если на странице присутствуют несколько блоков, для каждого из которых нужен свой свайп (который идёт в одну сторону). Здесь возможно придётся придумывать систему статусов, которые будут храниться в Vuex.
- Шина событий. Возможно при разработке приложения Вы воспользуетесь шиной событий для передачи информации из компонента/миксина со свайпом в другой компонент. В этом случае стоит учесть, что при каждом переходе между страницами в соответствующий _events Вашей шины в конец будет добавляться новый элемент.
Т.е. может быть такая ситуация, что пользователь прошёлся по приложению, вернулся обратно и при свайпе у него ничего не открылось. Причина в том, что боковушка открылась и закрылась несколько раз

Также заметил интересную проблему: если сохранить работу библиотеки в миксин, в котором свайп инициализируется по классу, то есть вероятность, что на одной странице это будет работать, а на другой нет. Единственное решение - привязывать к id
  • Вопрос задан
  • 4615 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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