uniapp的touchstart与click

移动端的执行顺序:touchstart->touchmove->touchend->click

需求:点击消息查看详情,长按消息执行删除操作

点击事件正常触发,触摸事件正常触发,不会互相影响

问题:再执行删除操作的时候会连带点击事件一起执行

当使用@touchstart.prevent的时候不会触发click事件,但正常点击事件也不生效了

当使用@touchstart.stop的时候不生效

在函数里使用e.preventDefault()也不生效,

最后看到一篇文章用变量判断,所以最后决定使用变量判断

<template><view><!-- 消息 --><view v-for="(item,index) in messagelist" :key="index" class="uni-message" @click="messageCountFn(item)" @touchstart="touchstart(item.id)"   @touchend="touchend"><uni-badge class="uni-badge-left-margin" :is-dot="item.messageStatus == 0" :text="item.messageStatus == 0?1:0" absolute="rightTop" size="small"><view  class="uni-img"><image src="@/static/other/messages.png" mode=""></image></view></uni-badge><view class="uni-counts"><view class="uni-top uni-def"><text class="mees">{{item.title}}</text><text>{{item.createTime}}</text></view><view class="uni-top"><text>{{item.content}}</text></view></view></view><view class="uni-nomessage" v-if="messagelist.length == 0"><image src="/static/other/nomessage.png" mode=""></image><view class="text">暂无消息</view></view><!-- tabbar --><tabbar  v-if="loadingTab"/></view>
</template><script setup>
import {ref} from 'vue'
import useUserStore from '@/store/user.js'
import { API_URL } from '@/commponents/request/env'
import tabbar from '@/commponents/tabbar/tabbar.vue'
import api from '@/commponents/request/index';
import {onShow,onPullDownRefresh } from "@dcloudio/uni-app";
// tab---pina
let useStore = useUserStore()
const messagelist = ref([])
const Loop = ref([])
// 控制tabbar显示
const loadingTab = ref(false)
// 判断是否是点击事件
const isClick = ref(true)
// 新消息数量
let messagenum = ref(0)
// 初始化函数
const showFn = ()=>{messagenum.value = 0loadingTab.value = falseapi('wx.getMessageList',{PageIndex:1,PageSize:999}).then(res=>{uni.stopPullDownRefresh()messagelist.value = res.data.rowsres.data.rows.forEach(item=>{if(item.messageStatus == 0){// 新消息数量messagenum.value++}})// 存到pina里面useStore.setMessagenum(messagenum.value)loadingTab.value = true})
}
onShow(()=>{showFn()
})// 下拉刷新
onPullDownRefresh(async ()=>{await showFn()})
// 点击消息进入详情页
const messageCountFn = (item)=>{if(isClick.value){uni.navigateTo({url: '/pages/message/messagecount?id='+item.id});}
}
// 开始触摸---用于删除消息
const touchstart = (id)=> {isClick.value = trueclearInterval(Loop.value); //再次清空定时器,防止重复注册定时器Loop.value = setTimeout(function() {isClick.value = falseuni.showModal({title: '删除',content: '请问要删除本条消息吗?',success: function(res) {if (res.confirm) {uni.request({url:`${API_URL}/client/delMessage?id=${id}`,header: {Authorization:'Bearer ' + uni.getStorageSync('token')},method:'DELETE',success(res){if(res.data.statusCode == 200){uni.showToast({title: '删除成功',duration: 2000})showFn()}}})} else if (res.cancel) {}}});}.bind(), 1000);
}
// 触摸结束---用于删除消息
const touchend = ()=> {clearInterval(Loop.value);
}
</script><style lang="scss">.uni-nomessage{text-align: center;margin-top: 122rpx;box-sizing: border-box;.text{color: #999999;}image{width: 153px;height: 130px;}}.uni-message{display: flex;margin:10px;border-bottom: 1px solid #ccc;padding-bottom: 10px;// justify-content: space-evenly;.uni-img{width: 41.5px;height: 41.5px;border-radius: 10px;image{width: 41.5px;height: 41.5px;}}.uni-counts{width: 80%;margin-left: 10px;.uni-def{margin-bottom: 5px;}.uni-top{display: flex;justify-content: space-between;text{width: 80vw;display: inline-block;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;font-family: Source Han Sans CN;font-size: 14px;font-weight: normal;line-height: normal;text-align: left;letter-spacing: 0em;color: #999999;}.mees{color: #000;font-size: 15px;font-weight: 400;}}}}</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/584748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言学习第二天

Go语言数组详解 var 数组变量名 [元素数量]Type 数组变量名&#xff1a;数组声明及使用时的变量名。 元素数量&#xff1a;数组的元素数量&#xff0c;可以是一个表达式&#xff0c;但最终通过编译期计算的结果必须是整型数值&#xff0c;元素数量不能含有到运行时才能确认大小…

阿里云2核2G3M服务器放几个网站?

阿里云2核2g3m服务器可以放几个网站&#xff1f;12个网站&#xff0c;阿里云服务器网的2核2G服务器上安装了12个网站&#xff0c;甚至还可以更多&#xff0c;具体放几个网站取决于网站的访客数量&#xff0c;像阿里云服务器网aliyunfuwuqi.com小编的网站日访问量都很少&#xf…

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…

springboot整合hadoop遇错

错误一&#xff1a; Caused by: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. 解决&#xff1a; 下载&#xff1a;https://github.com/steveloughran/winutils 选择一个版本 例如&#xff1a;3.0.0 &#xff0c;将里面的hadoop.dll文件复制…

在IntelliJ IDEA中精通Git配置与使用:全面指南

目录 1 前言2 idea中使用git的准备2.1 在 IntelliJ IDEA 中配置 Git2.2 配置 Git 忽略文件 3 在IntelliJ IDEA中使用Git的基本步骤3.1 项目导入到 Git3.2 查看与切换版本信息 4 在 IntelliJ IDEA 中使用分支4.1 创建分支4.2 无冲突合并4.3 冲突合并 5 结语 1 前言 版本控制是现…

小秋SLAM入门实战opencv所有文章汇总

【OpenCV】图像的形态学操作&#xff5c;腐蚀&#xff5c;膨胀&#xff5c;Canny边缘检测 【OpenCV】图像旋转 平移 仿射变换 透视变换 【OpenCV】图像多通道混合、缩放 【OpenCV】图像上画线、文字、椭圆、矩形框 【OpenCV】图像批量重命名 【OpenCV】图像的像素直方图 图像特…

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录&#xff0c;也可mkdir新建一个目录&#xff1a;用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录&#xff0c;指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…

Process finished with exit code -1073741515 (0xC0000135)

出现“Process finished with exit code -1073741515 (0xC0000135)”这样的错误通常意味着你的Python程序在运行时遇到了一个异常&#xff0c;导致程序异常终止。这个错误代码是一个Windows错误代码&#xff0c;表示程序在运行时遇到了一个无法恢复的错误&#xff0c;需要被关闭…

[每周一更]-(第79期):Apache代理的配置

反向代理逻辑类似Nginx&#xff0c;以下具体展示属于apache的配置和参数说明 局部代理配置方式&#xff1a; # 配置包含https的需要打开 SSLProxyEngine on ProxyPass /api/small https://api.web.com/version1/small/ ProxyPassReverse /api/small https://api.web.com/versio…

go语言面试一逃逸分析

一、逃逸分析 go语言中也会存在c语言的内存泄漏和指针逃逸&#xff0c;所以go语言采用了逃逸分析来解决这种危险情况。 内存泄漏&#xff1a;如果使用C语言中的malloc动态分配内存&#xff0c;但却使用后忘记释放该内存&#xff0c;那么该内存就会发生泄漏&#xff0c;即原内…

docker -v 和docker --device 有什么区别

1.docker -v 和docker --device的区别 区别在于docker -v是用来挂载宿主机文件系统的目录或文件到容器中&#xff0c;而docker --device是用来添加设备到容器中。 以docker -v /dev/ttyS0:/dev/ttyS0 和docker --device/dev/ttyS0:/dev/ttyS0的区别为例。 这两个命令都是用来将…

直方图与均衡化

直方图 统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数 images&#xff1a;原图像图像格式为uint8或float32&#xff0c;当传入函数时应用[]括起来&#xff0c;例如[img]。 channels&#xff1a;同样用中括号括起来&#xff…

如何确保云中高可用?聊聊F5分布式云DNS负载均衡

在当今以应用为中心的动态化市场中&#xff0c;企业面临着越来越大的压力&#xff0c;不仅需要提供客户所期望的信息、服务和体验&#xff0c;而且要做到快速、可靠和安全。DNS是网络基础设施的重要组成部分&#xff0c;拥有一个可用的、智能的、安全和可扩展的DNS基础设施是至…

工程(十六)——自己数据集跑Fast_livo

一、基础环境 Ubuntu20.04 ROS noetic PCL 1.8 Eigen 3.3.4 Sophus git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build && cd build && cmake .. make sudo make install 下面两个直接把包下载下来一起编译…

2023-12-29 服务器开发-Centos部署LNMP环境

摘要: 2023-12-29 服务器开发-Centos部署LNMP环境 centos7.2搭建LNMP具体步骤 1.配置防火墙 CentOS 7.0以上的系统默认使用的是firewall作为防火墙&#xff0c; 关闭firewall&#xff1a; systemctl stop firewalld.service #停止firewall systemctl disable fire…

Windows上ModbusTCP模拟Master与Slave工具的使用

场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用&#xff1a; Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…

C语言编程入门 – 编写第一个Hello, world程序

C语言编程入门 – 编写第一个Hello, world程序 C Programming Entry - Write the first application called “Hello, world!” By JacksonML C语言编程很容易&#xff01; 本文开始&#xff0c;将带领你走过C语言编程之旅&#xff0c;通过实例使你对她颇感兴趣&#xff0c;一…

GLTF编辑器实现逼真的石门模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在凹凸贴图中&#xff0c;每个像素点都包含了一个法线向量&#xff0…

楼宇对讲门铃选型分析

目前很多的高层住宅都使用了对讲门铃了&#xff0c;在频繁使用中&#xff0c;门铃会出现的越来越多种类&#xff0c;下面我就简单的介绍会有用到的几款芯片. 语音通话芯片&#xff1a;D34018,D34118,D5020,D31101; D34018 单片电话机通话电路&#xff0c;合并了必 需的放大器…

带多版本管理的Ubuntu软件源服务器搭建

准备阶段 下载安装reprepro 注: 官方下载安装的reprepro是不支持多版本管理的, 因此 不要使用sudo apt install reprepro下载 源码网址 将三个文件放在同一个文件夹下, 例如repreproNew cd repreproNew # 安装所需依赖 sudo apt-get install build-essential debhelper sud…