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组成的数组。


相关文章
|
5月前
|
传感器 人工智能 监控
Uni-app智慧工地数据大屏可视化监管平台源码带APP
智慧工地的核心是数字化,它通过传感器、监控设备、智能终端等技术手段,实现对工地各个环节的实时数据采集和传输,如环境温度、湿度、噪音等数据信息,将数据汇集到云端进行处理和分析,生成各种报表、图表和预警信息,帮助管理人员了解工地的实时状况,及时做出决策和调整,
146 0
|
5月前
|
移动开发 JavaScript 前端开发
如何识别app中的页面是否是js(h5)页面
如何识别app中的页面是否是js(h5)页面
62 2
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
60 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
移动开发 前端开发 JavaScript
|
3月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
2月前
|
移动开发 JavaScript 开发工具
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app
|
4月前
|
搜索推荐
App Inventor 2 列表排序,函数式编程轻松实现高级排序算法
本文探讨了列表的函数式编程高级用法,允许根据自定义逻辑进行排序。不仅支持基本数据类型(文本和数字)的升序和降序排序,还能处理复杂结构类型中特定元素的排序。通过示例展示了如何定义比较函数来实现升序和降序,简化了排序操作。
47 0
|
4月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
322 1
|
5月前
|
移动开发 监控 供应链
JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(app、小程序、H5、台后管理端)
一开始接触MES系统,很多人会和博主一样,对MES细节的应用不了解,这样很正常,因为MES系统相对于其他系统来讲应用比较多!
163 1
JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(app、小程序、H5、台后管理端)
|
3月前
|
JSON 小程序 数据格式
uni-app 使用vscode开发uni-app
uni-app 使用vscode开发uni-app
170 0
下一篇
无影云桌面