微信小程序拖拽排序列表的示例代码


Posted in Javascript onJuly 08, 2020

拖拽排序列表

微信小程序拖拽排序列表的示例代码

思路

界面分为两层:

  • 底层,正常列表展示,拖拽的时候不做处理(大牛直接加了动画,原谅我技艺不精,还没实现)
  • 顶层,movable-view组件,不长按不展示,之后长按才展示,且没有点击事件。

事件

主要监听:longpress , touchmove , touchend 三个事件

longpress

保障长按才有效,并设定许多其他值。

touchmove

滑动的时候触发

  • 判断是否需要滑动页面,因为 movable-area组件 滑动事件被catch掉,无法滑动;
  • 记录滑动经过的项,在页面【底层】设置经过项为其他样式(算是补足没有滑动动画的缺陷吧,不需要可以删除 lastTarget字段)。

touchend

滑动结束时触发

获取目标节点索引,将初始拖拽节点移动至目标节点,其中的关键代码为:

list.splice(futureIndex, 0, list.splice(dragElementIndex, 1)[0]); // 移动位置

(这行代码参考了Vue.Draggable中一行代码)

将其他设置置空

代码

代码片段

码云仓库 欢迎star、提问题。鞋鞋

示例

// 初始点击
  stratBtn(e){
    let index = http.dataIndex(e)[0];//获取当前点击的列表
    let busArr = this.data.busArr;//获取列表中的所有数组
    let pageY = Number(e.touches[0].pageY);//初始点击的Y点坐标
    let busActObj = busArr[index];//单独记录当前点击的数据
    this.setData({ //保存数据
      sPageY:pageY,
      mPageY:pageY,
      moveSortBox:true,
      clickIndex:index,
      busActObj:busActObj
    })
  },
  // 开始移动
  moveBtn(e){
    let pageY = Number(e.touches[0].pageY); //记录移动点的坐标
    this.setData({ //记录
      mPageY:pageY,
      moveSortBox:true,
    })
  },
  // 结束点击
  endBtn(e){
    let sPageY = Number(this.data.sPageY); //获取初始点的坐标
    let busArr = this.data.busArr; //获取数组
    let pageY = Number(e.changedTouches[0].pageY);//获取结束点的坐标
    let clickIndex = Number(this.data.clickIndex); //初始点的位置
    let busActObj = this.data.busActObj;//获取初始点的列表单独数据
    let position = parseInt((pageY-sPageY)/90)+(clickIndex+1); //每个盒子固定高度90px (结束点-初始点/盒子高度)+(初始点的位置+1)可以得到移动的位置
    busArr.splice(clickIndex,1);//删除初始数据
    busArr.splice(position,0,busActObj);//在移动点重新插入数据
    this.setData({//保存
      moveSortBox:false,
      busArr:busArr
    })
  },

参考链接

[1] SortableJS Vue.Draggable

[2] SortableJS Sortable

[3] SortableJS演示示例 Vue.Draggable

[4] 好想再胖十斤 25行代码解决小程序的拖拽排序

到此这篇关于微信小程序拖拽排序列表的示例代码的文章就介绍到这了,更多相关微信小程序拖拽排序列表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
Mar 09 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
优化Vue中date format的性能详解
Jan 13 Javascript
JS实现京东商品分类侧边栏
Dec 11 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 #Javascript
深度解读vue-resize的具体用法
Jul 08 #Javascript
详解React 条件渲染
Jul 08 #Javascript
webpack5 联邦模块介绍详解
Jul 08 #Javascript
实例讲解React 组件
Jul 07 #Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 #Javascript
详解React 元素渲染
Jul 07 #Javascript
You might like
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python 中 Meta Classes详解
2016/02/13 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python append、extend与insert的区别
2016/10/13 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python多维数组切片方法
2018/04/13 Python
Python合并多个Excel数据的方法
2018/07/16 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python:动态路由的Flask程序代码
2019/11/22 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
董事长助理岗位职责
2014/02/18 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
爱晚亭导游词
2015/02/09 职场文书
投诉信范文
2015/07/02 职场文书
Redis实现订单过期删除的方法步骤
2022/06/05 Redis