vue-mb-touch 是一个vue的移动端的事件项目,内置了点击(press)事件,长按(press)事件
npm install vue-mb-touch
使用方法
<template> <div v-touch.press.tap @tap="tap" @press="press"> </div> </template> <script lang="ts"> import { Component, Vue } from "vue-property-decorator"; import vueMobileTouch from "vue-mb-touch"; Vue.use(vueMobileTouch); @Component export default class Home extends Vue { public tap() { /** tap */ } public press(e: Event) { /** press */ } public data() { return { }; } } </script> ```` > 开启代理模式 ````vue <template> <ul v-touch.proxy @tap="tap($event)" > <li data-proxy data-index="1"></li> <li data-proxy data-index="2"></li> <li data-proxy data-index="3"></li> </ul> </template> <script lang="ts"> import { Component, Vue } from "vue-property-decorator"; import vueMobileTouch from "vue-mb-touch"; Vue.use(vueMobileTouch); @Component export default class Home extends Vue { public tap(e: event) { const currentTarget = e.currentTarget as HTMLElement; console.log(currentTarget.tagName.toLowerCase()); // li console.log(JSON.stringify(currentTarget.dataset)); // {proxy: "", index: "1"} } public data() { return { }; } } </script>
在引入 vue-mb-touch 时,可以传入一个全局配置对象。该对象目前支持 maxDistance 与 pressTime, maxDistance 用于手指在屏幕上移动多长距离内可触发事件默认10,pressTime 用于手机按住屏幕多长时间触发长按事件,默认650。具体操作如下:
import Vue from 'vue'; import vueMobileTouch from "vue-mb-touch"; Vue.use(vueMobileTouch, {maxDistance: 10,pressTime: 650});
指令参数
如果是在vue封装的组件上使用 v-touch 指令, 在监听事件时,需要加上 native 参数