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


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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
Nov 16 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
JS前端广告拦截实现原理解析
Feb 17 Javascript
vue在线动态切换主题色方案
Mar 26 Javascript
JS严格模式原理与用法实例分析
Apr 27 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
详解python之协程gevent模块
2018/06/14 Python
python解析xml简单示例
2019/06/21 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
简述数据库的设计过程
2015/06/22 面试题
七一表彰活动方案
2014/01/18 职场文书
军训学生自我鉴定
2014/02/12 职场文书
高三学生评语大全
2014/04/25 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
会议室标语
2014/06/21 职场文书
收入证明怎么写
2015/06/12 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript