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


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 相关文章推荐
JavaScript TO HTML 转换
Jun 26 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
使用jquery操作session方法分享
Jan 22 Javascript
javascript的switch用法注意事项分析
Feb 02 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
学习vue.js计算属性
Dec 03 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 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
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
详解PHP PDO简单教程
2019/05/28 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
机修工工作职责
2014/02/21 职场文书
自荐信如何制作?
2014/02/21 职场文书
2014年学生会工作总结
2014/11/07 职场文书
同学聚会通知短信
2015/04/20 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Python使用pyecharts控件绘制图表
2022/06/05 Python