uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。

简介: uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。

背景:

作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,下面是我在uniapp中使用SortableJS的使用详细流程;


vue开发的web项目可以参考我的另一篇文章


Vue中拖动排序功能,引入SortableJs,前端拖动排序。

https://blog.csdn.net/weixin_64530670/article/details/132328122?spm=1001.2014.3001.5501


开始前先下载好Sortable至项目中,可直接下载min包,官方文档:

SortableJs中文文档

http://www.sortablejs.com


  1. sortable下载到本地  renderjs只支持H5和App-vue,不支持小程序和App-nvue开发
  2. 下载好后,在html代码处,找到你要拖拽排序的元素的父元素,给它设置一个id,我这边设置的就是'sort'  ,然后 给要拖拽的元素设置:data-id    它的作用是,决定了拖拽结束后返回给你一个怎样的数组,传item.id,它就会自动在拖拽结束后返回给你一个后排序好的id数组. 然后我们就可以拿去处理数据,发请求保存顺序啦!
<view class="appList" id="sort">
    <view class="appItem" v-for="(item,index) in usualist" :key='item.appId' :data-id="item.appId">
      <view class="remove" @tap="remove(item)">
        <u-icon name="minus-circle-fill"></u-icon>
      </view>
      <image class="img" :src='getimgUrl(item.overImgUrl)' v-if="Boolean(item.overImgUrl)"></image>
      <view class="first" v-else>
        {{getfirst(item.name)}}
      </view>
      <view class="appIntroduction">
        <text>{{item.name}}</text>
      </view>
      <view class="totop">
        <u-icon name="list"></u-icon>
      </view>
    </view>
  </view>
  1. css:
  .sort {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    &-item {
      width: 200rpx;
      height: 100rpx;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 15rpx;
      background: #f5f5f5;
      margin: 5rpx;
    }
  }
  1. js代码 再写一个script标签:
<script module='sortable' lang="renderjs">
import Sortable from 'static/Sortable.min.js'
export default {
  mounted() {
    this.initSortable()
  },
  methods: {
    initSortable() {
      if (typeof window.Sortable === 'function') {
        this.setSortable()
      } else {
        const script = document.createElement('script')
        script.src = '/static/Sortable.min.js'
        script.onload = this.setSortable.bind(this)
        document.head.appendChild(script)
        }
      },
    setSortable() {
      let option = {
        animation: 150,
        delay:300,
        onEnd: (e) => {
          // 拖拽完成后回调
          this.$ownerInstance.callMethod('changeSort', sortable.toArray());
        }
      }
      let sortable = Sortable.create(document.getElementById('sort'), option);
    },
  }
}
</script>


以上代码中,在执行完拖拽后会执行changeSort方法,这个方法需要写到原本的那个script中:


changeSort(e) {
  console.log(e)
  this.flag = true
  this.updatelist = e.join(',')
  },

拖拽后打印出来的e就是有已经排序好的每一项的id组成的数组。


相关文章
|
1月前
|
传感器 人工智能 监控
Uni-app智慧工地数据大屏可视化监管平台源码带APP
智慧工地的核心是数字化,它通过传感器、监控设备、智能终端等技术手段,实现对工地各个环节的实时数据采集和传输,如环境温度、湿度、噪音等数据信息,将数据汇集到云端进行处理和分析,生成各种报表、图表和预警信息,帮助管理人员了解工地的实时状况,及时做出决策和调整,
49 0
|
2月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
106 3
|
2月前
|
API
uni-app 146朋友圈列表api开发
uni-app 146朋友圈列表api开发
19 0
|
1天前
|
Web App开发 数据采集 移动开发
开发uniapp过程中对app、微信小程序与h5的webview调试
开发uniapp过程中对app、微信小程序与h5的webview调试
|
1天前
|
移动开发 jenkins 持续交付
jenkins编译H5做的android端编译卫士app记录
jenkins编译H5做的android端编译卫士app记录
|
1月前
|
移动开发 小程序 前端开发
使用uni-app开发(h5、小程序、app)步骤
使用uni-app开发(h5、小程序、app)步骤
|
2月前
|
移动开发 负载均衡 小程序
代驾app开发丨代驾系统开发玩法详情丨代驾系统开发网页版/H5/小程序及源码部署
**司机/代驾员端**:司机可以通过APP接收订单,查看订单详情、路线和导航,提供现场服务并进行确认。
|
2月前
uni-app 175app端兼容处理(二)
uni-app 175app端兼容处理(二)
18 1
|
2月前
|
JavaScript
uni-app 174app端兼容处理(一)
uni-app 174app端兼容处理(一)
16 2
|
2月前
uni-app 162初始化会话列表功能
uni-app 162初始化会话列表功能
15 0