微信小程序 -- 基于 movable-view 实现拖拽排序
微信小程序 -- 基于 movable-view 实现拖拽排序
项目基于
colorui样式组件 ColorUI组件库 (color-ui.com)
1.实现效果

2. 设计思路
- movable-view 绑定块移动事件的 块
ID,块移动的坐标 - 移动结束后触发
moveEnd事件,根据Y坐标对对象数组进行排序 - 根据排序结果重置块位置
3.实现代码
代码已经进行了最简化处理
图中效果实现需引入colorui的main.wxss样式部分。
wxml
<movable-area class="padding text-center bg-grey" style="width:100%;height:500px;" >
<movable-view class="radius shadow bg-white" style="width:80%;height:80px;z-index:{{index==moveId?2:1}}" wx:for="{{tabList}}" wx:key="index" x="{{item.x}}" y="{{item.y}}" direction="all"
bindchange="moveStatus" bindtouchend='moveEnd' data-moveid="{{index}}">
{{item.name}}</movable-view>
</movable-area>
js
var compare = function (obj1, obj2) {
var val1 = obj1.y;
var val2 = obj2.y;
if (val1 < val2) {
return -1;
} else if (val1 >= val2) {
return 1;
} else {
return 0;
}
}
Page({
/**
* 页面的初始数据
*/
data: {
branchid:'',
appdocid:'',
tabList:[
{
name:'十步杀一人'
},
{
name:'千里不留行'
},
{
name:'事了拂衣去'
},
{
name:'深藏身与名'
}
],
//移动的是哪个元素块
moveId:null,
//最终停止的位置
endX:0,
endY:0
},
initMove(){
let tabList = this.data.tabList;
var tarr = []
tabList.forEach(function(ele,index){
let obj = ele
obj.id = index
obj.x = 30
obj.y = 100*index +20
tarr.push(obj)
})
console.log(tarr)
this.setData({
tabList:tarr
})
},
moveEnd(e){
console.log(e)
var that = this;
that.setData({
["tabList["+that.data.moveId+"].x"]:that.data.endX,
["tabList["+that.data.moveId+"].y"]:that.data.endY
},()=>{
let tabList = this.data.tabList;
tabList = tabList.sort(compare);
that.setData({
tabList
},()=>{
setTimeout(function(){
that.initMove();
},500)
})
})
//计算位置
},
moveStatus(e){
// console.log(e)
//移动的块ID
var moveid = e.currentTarget.dataset.moveid;
//最终坐标
let x = e.detail.x
let y = e.detail.y
this.setData({
moveId:moveid,
endX:x,
endY:y
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
this.initMove();
}
})
4.参考文档
微信小程序 -- 基于 movable-view 实现拖拽排序的更多相关文章
- 微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)
touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,弹窗 touchend 手指触摸动作结束 ...
- 微信小程序-基于canvas画画涂鸦
代码地址如下:http://www.demodashi.com/demo/14461.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序基于swiper组件的tab切换
代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序基于scroll-view实现锚点定位
代码地址如下:http://www.demodashi.com/demo/14009.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序-基于高德地图API实现天气组件(动态效果)
微信小程序-基于高德地图API实现天气组件(动态效果) 在社区翻腾了许久,没有找到合适的天气插件.迫不得已,只好借鉴互联网上的web项目,手动迁移到小程序中使用.现在分享到互联网社区中,帮助后续有 ...
- 微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用)
微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用) 没错,我是皮友,我想学习舞蹈(/doge)和瑜伽 ,要无水印的那种有助于我加深学习. 1.组件效果展示 2.组件引入准备 h ...
- 微信小程序_(组件)view视图容器
微信小程序view组件官方文档 传送门 Learn 一.hover-class属性 二.hover-start-time与hover-stay-time属性 三.hover-stop-propagat ...
- 微信小程序基于腾讯云对象存储的图片上传
在使用腾讯云对象存储之前,公司一直使用的是传统的FTP的上传模式,而随着用户量的不断增加,FTP所暴露出来的问题也越来越多,1.传输效率低,上传速度慢.2.时常有上传其他文件来攻击服务器,安全上得不到 ...
- 微信小程序基于第三方websocket的服务器端部署
微信小程序后台请求越来越严格 1.request要求用https 2.websocket要求用wss 3.测试后发现websocket只能走433端口 作为.net开发,websocket又是使用的第 ...
随机推荐
- Redis—简单动态字符串(SDS)
目录 Redis-简单动态字符串(SDS) SDS的定义 SDS与C字符串的区别 1. 常数复杂度获取字符串长度: 2. 杜绝缓冲区溢出: 3. 减少修改字符串时带来的内存重分配次数 4. 二进制安全 ...
- Idea一直卡在loading archetype list问题解决(或者报Unable to import maven project: See logs for details)
暂时没有测试成功 https://blog.csdn.net/calo_missile/article/details/95898519
- 使用constexpr时遇到的小坑
最近在使用constexpr的时候无意中踩了个小坑. 下面给个小示例: #include <iostream> constexpr int n = 10; constexpr char * ...
- Elasticsearch数据库优化实战:让你的ES飞起来
摘要:ES已经成为了全能型的数据产品,在很多领域越来越受欢迎,本文旨在从数据库领域分析ES的使用. 本文分享自华为云社区<Elasticsearch数据库加速实践>,原文作者:css_bl ...
- QFNU 10-09 training
1.F - Three displays 题意:就是给出了两个数组,然后第一组数中找到i,j,k满足i<j<k,第二组数中找到a[i],a[j],a[k],满足a[i]<a[j]&l ...
- Blazor实现未登录重定向到登录页的方法
今天研究了一下blazor,发现他默认启动就是类似于后台管理系统的界面,看到这个页面我就想给他写个登录,有登录就涉及到未登录重定向的问题,但是我没有找到blazor全局路由的设置,知道的老哥可以告诉我 ...
- linux跨文件复制粘贴
跨文件是这样的: 复制a.txt的第20行至第30行到b.txt中vi a.txt:2010yy:e b.txtp
- Zoho:SaaS行业的“紫色奶牛”
以下文章来源于:中国软件网,作者王锦宝 蓝天白云的映衬下,一群黑白相间的奶牛在绿草场自由玩耍,这种田园牧歌场景看久了,总会引起审美疲劳.假如突然出现一头紫色奶牛,你肯定会眼前一亮,把所有注意力集中到紫 ...
- [bug] CDH 安装 Error : No matching Packages to list
信息 分析 我的系统是CentOS 7,而 cm 安装包是配合 redhat 6 的,应该选择 redhat 7 目录下的包 参考 https://community.cloudera.com/t5/ ...
- [bug] mysql:Unknown system variable 'tx_isolation'
原因: 电脑上安装mysql与jdbc驱动mysql-connector-java.jar版本不匹配 解决: 导入与mysql版本匹配的mysql-connector-java.jar即可