微信小程序实现左滑修改、删除功能
程序员文章站
2023-01-10 13:51:17
本文实例为大家分享了微信小程序实现左滑修改、删除的具体代码,供大家参考,具体内容如下
wxml:
本文实例为大家分享了微信小程序实现左滑修改、删除的具体代码,供大家参考,具体内容如下
wxml:
<view class="offer-item" wx:for-items='{{offerlist}}'> <!--这里绑定了刚才说的3个函数分别为 touchs,touchm touche--> <!--这里注意这个 style="{{item.txtstyle}}" ,这是我们一会再js中 将要设置的样式 --> <view style="{{item.txtstyle}}"> <view class="offer-item-top fl clearfix" bindtouchstart="touchs" bindtouchmove="touchm" bindtouchend="touche" data-index="{{index}}"> <navigator bindtap='navigatorto' data-index="{{item.id}}"> <view class='content'> <view class='title clearfix'> <view class='fl'> {{item.title}}党建项目报价表 </view> <image src='../../images/right.png' class='fr'></image> </view> <view class='note clearfix'> <view class='price fl'> {{item.create_time}} </view> </view> </view> </navigator> </view> <!--这里是左滑按钮部分----start--> <view bindtap="delitem" class='posit fr ismove' hidden='{{!item.ismove}}'> <view class="ref" data-offerid="{{item.id}}" data-index="{{item.id}}" catchtap="ref"> <image src='../../images/ref.png'></image> </view> <view class="del" data-offerid="{{item.id}}" data-index="{{item.id}}" catchtap="del"> <image src='../../images/default.png'></image> </view> </view> <!--这里是左滑按钮部分----end--> </view> </view>
wxss:
.offer-item { height: 150rpx; width: 100vw; overflow-x: hidden; border-bottom: 1px solid #f0f0f0; } .offer-item>view { position: absolute; /* width: calc(100% + 200rpx); */ height: 150rpx; } .offer-item .offer-item-top { height: 100%; } .offer-item .offer-item-top navigator { display: inline-block; width: 100vw; height: 100%; } .offer-item .content { padding: 35rpx 30rpx; position: relative; height: calc(100% - 70rpx); } .offer-item .title .fl { display: inline-block; width: 78%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 30rpx; color: #333; } .offer-item .title .fr { display: inline-block; width: 20rpx; height: 26rpx; margin-top: 5rpx; } .offer-item .note { position: absolute; left: 30rpx; bottom: 35rpx; width: calc(100vw - 60rpx); font-size: 24rpx; color: #999; } .offer-item .posit { width: 200rpx; height: 150rpx; line-height: 150rpx; text-align: center; display: none } .posit.ismove { display: inline-block; position: absolute; } .posit.ismove[hidden] { display: none } .offer-item .posit>view { display: inline-block; width: 100rpx; } .offer-item .posit>view:first-of-type { background-color: #fed847; } .offer-item .posit>view:last-of-type { background-color: #c71b1b; } .offer-item .posit image { display: inline-block; width: 36rpx; height: 36rpx; }
js:
let len = 0; // 初次加载长度 let hadlastpage = false; // 判断是否到最后一页 var initdata = function (that) { var list = that.data.offerlist for (var i = 0; i < list.length; i++) { list[i].txtstyle = ""; list[i].ismove = false; } that.setdata({ offerlist: list }) } page({ data: { offerlist: [ ], delbtnwidth: 100, // 删除按钮宽度单位(rpx) }, // 手指刚放到屏幕触发 touchs: function (e) { console.log("touchs" + e); // initdata(this); // 判断是否只有一个触摸点 if (e.touches.length == 1) { this.setdata({ // 记录触摸起始位置的x坐标 startx: e.touches[0].clientx }); }; return false; }, // 触摸时触发,手指在屏幕上每移动一次,触发一次 touchm: function (e) { var that = this; initdata(that); if (e.touches.length == 1) { // 记录触摸点位置的x坐标 var movex = e.touches[0].clientx; // 计算手指起始点的x坐标与当前触摸点的x坐标的差值 var disx = that.data.startx - movex; // delbtnwidth 为右侧按钮区域的宽度 var delbtnwidth = that.data.delbtnwidth; var txtstyle = ""; if (disx == 0 || disx < 0) { // 如果移动距离小于等于0,文本层位置不变 txtstyle = "left:0px"; } else if (disx > 0) { // 移动距离大于0,文本层left值等于手指移动距离 txtstyle = "left:-" + disx + "px"; if (disx >= delbtnwidth) { // 控制手指移动距离最大值为删除按钮的宽度 txtstyle = "left:-" + delbtnwidth + "px"; } } // 获取手指触摸的是哪一个item var index = e.currenttarget.dataset.index; var list = that.data.offerlist; // 将拼接好的样式设置到当前item中 list[index].txtstyle = txtstyle; list[index].ismove = true; // 更新列表的状态 this.setdata({ offerlist: list }); } }, touche: function (e) { console.log( e); var that = this if (e.changedtouches.length == 1) { // 手指移动结束后触摸点位置的x坐标 var endx = e.changedtouches[0].clientx; // 触摸开始与结束,手指移动的距离 var disx = that.data.startx - endx; var delbtnwidth = that.data.delbtnwidth; // 如果距离小于删除按钮的1/2,不显示删除按钮 var txtstyle = disx > delbtnwidth / 2 ? "left:-" + delbtnwidth + "px" : "left:0px"; // 获取手指触摸的是哪一项 var index = e.currenttarget.dataset.index; var list = that.data.offerlist; list[index].txtstyle = txtstyle; // 更新列表的状态 that.setdata({ offerlist: list }); } }, /** * */ navigatorto: function (event) { }, /** * 删除操作 */ del: function (e) { var that = this; var data = { id: e.currenttarget.dataset.index }; wx.showmodal({ title: '', content: '确定选择删除么?', confirmcolor: '#c71b1b', cancelcolor: '#666666', success: function (res) { if (res.confirm) { utils.requestfun("接口url", data, 'post', function (msg) { console.log(msg) wx.showtoast({ title: '删除成功', icon: 'success', duration: 1500 }) var lists = that.data.offerlist; var list1 = []; for (let i = 0; i < lists.length; i++) { if (lists[i].id != e.currenttarget.dataset.index) { list1.push(lists[i]) } } len--; that.setdata({ offerlist: list1 }) }) } else if (res.cancel) { } } }) }, /** * 修改操作 */ ref: function (e) { wx.navigateto({ url: '修改页面路径?id=' + e.currenttarget.dataset.index, }) }, /** * 生命周期函数--监听页面加载 */ onload: function (options) { page = 0; this.loadlist(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onready: function () { }, /** * 生命周期函数--监听页面显示 */ onshow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onhide: function () { }, /** * 生命周期函数--监听页面卸载 */ onunload: function () { hadlastpage = false; len = 0; }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onpulldownrefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onreachbottom: function (event) { console.log("上拉事件") this.loadlist(); }, /** * 数据请求封装 */ loadlist: function (event) { if (hadlastpage != false) { wx.showtoast({ title: '到底啦', }); return; } var that = this; // 显示加载图标 wx.showloading({ title: '玩命加载中', }) let data = { length: len, openid: 'openid' }; utils.requestfun("接口url", data, 'post', function (msg) { if (msg.data.length != 0) { var lists = that.data.offerlist; for (let i = 0; i < msg.data.length; i++) { msg.data[i].ismove = false; lists.push(msg.data[i]); } // len len = len + msg.data.length; // 设置数据 that.setdata({ offerlist: lists }) } else { hadlastpage = true; } wx.hideloading(); }) } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 如何酿梅子酒比较好喝
下一篇: 吃辣上火怎么办,这些常识必须知道!