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


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 相关文章推荐
倒记时60刷新网页的js代码
Feb 18 Javascript
jQuery实现给页面换肤的方法
May 30 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
如何通过JS实现日历简单算法
Oct 14 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
pandas按条件筛选数据的实现
2021/02/20 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
面试后的英文感谢信
2014/02/01 职场文书
技术负责人任命书
2014/06/05 职场文书
物理教育专业求职信
2014/06/25 职场文书
大学生心理活动总结
2014/07/04 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技