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


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 function定义函数使用心得
Apr 15 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
基于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中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
详解Vue This$Store总结
2018/12/17 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
vuex存储token示例
2019/11/11 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
python抓取网页中链接的静态图片
2018/01/29 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
python实现打砖块游戏
2020/02/25 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
工业自动化毕业生自荐信范文
2014/01/04 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
村官个人总结范文
2015/03/03 职场文书
英语通知范文
2015/04/22 职场文书
指导老师鉴定意见
2015/06/05 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers