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


相关文章
|
3天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
2天前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
10天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
70 3
|
24天前
|
缓存 移动开发 小程序
uni-vue3-wetrip自创跨三端(H5+小程序+App)酒店预订app系统模板
vue3-uni-wetrip原创基于vite5+vue3+uniapp+pinia2+uni-ui等技术开发的仿去哪儿/携程预约酒店客房app系统。实现首页酒店展示、预订搜索、列表/详情、订单、聊天消息、我的等模块。支持编译H5+小程序+App端。
70 8
|
2月前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
65 3
|
2月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
401 3
|
5月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
123 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
6月前
|
存储 移动开发 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;
|
5月前
|
移动开发 前端开发 JavaScript