【微信小程序-原生开发】列表 - 拖拽排序(官方组件 movable-area 和 movable-view 的用法)

这篇具有很好参考价值的文章主要介绍了【微信小程序-原生开发】列表 - 拖拽排序(官方组件 movable-area 和 movable-view 的用法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序拖拽排序,# 微信小程序,# 已归档链接,微信小程序,javascript,前端

index.wxml

<movable-area style="width: 100%;height:{{(dataList.length)*60}}px;">
  <movable-view class="itemBox" style="z-index:{{index == moveId ? 2 : 1}}" wx:for="{{dataList}}" wx:key="index" y="{{item.y}}" direction="all" bind:change="moving" bind:touchend='moved' data-moveid="{{index}}">
    {{item.content}}
  </movable-view>
</movable-area>

index.css

.itemBox {
  background: white;
  width: 100%;
  height: 80rpx;
  line-height: 80rpx;
  padding: 0rpx 20rpx;
  box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .4);
}

index.js

实现逻辑详见代码的注释文章来源地址https://www.toymoban.com/news/detail-680128.html

Page({
  data: {
    // 列表数据
    dataList: [{
        content: "苹果"
      },
      {
        content: "香蕉"
      },
      {
        content: "梨子"
      },
    ],
    // 移动块的id
    moveId: null,
    // 最终停止的位置
    endY: 0,
  },
  onLoad() {
    this.init(this.data.dataList)
  },
  // 重置列表顺序
  init(dataList) {
    // 列表项高度
    const ITEM_HEIGHT = 40
    // 列表项上外边距
    const ITEM_MARGIN_TOP = 14
    let newDataList = dataList.map((item, index) => {
      item.id = index
      // 重置单项的y坐标(组件默认是绝对定位 left:0  top:0 )
      item.y = (ITEM_HEIGHT + ITEM_MARGIN_TOP) * index + ITEM_MARGIN_TOP
      return item
    })

    this.setData({
      dataList: newDataList
    })
  },
  // 移动中-获取移动元素的id,实时获取移动元素的y坐标
  moving(e) {
    this.setData({
      moveId: e.currentTarget.dataset.moveid,
      endY: e.detail.y,
    })
  },
  // 移动后
  moved() {
    let {
      dataList,
      moveId,
      endY
    } = this.data
    let newDataList = JSON.parse(JSON.stringify(dataList))
    newDataList[moveId].y = endY
    newDataList = newDataList.sort((a, b) => a.y - b.y)
    this.init(newDataList)
  }
})

注意事项

  1. 需要根据各项的内容,调整或动态生成 ITEM_HEIGHT 值
  2. 因 movable-view 是绝对定位,不方便实现水平居中,所以设定 width: 100%; 占满宽度

到了这里,关于【微信小程序-原生开发】列表 - 拖拽排序(官方组件 movable-area 和 movable-view 的用法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 之 原生开发

    小程序的核心技术主要是三个: 页面布局:WXML ,类似HTML 页面样式:WXSS ,几乎就是CSS(某些不支持,某些进行了增强,但是基本是一致的) 页面脚本: JavaScript+WXS(WeixinScript) 网址 : 微信小程序 网址 : 微信开发者工具下载地址与更新日志 | 微信开放文档 Vue的MVVM和小程序MVV

    2023年04月08日
    浏览(56)
  • 【微信小程序-原生开发】实用教程21 - 分包

    当微信小程序主包大小超过2M时,则需要对微信小程序进行分包,方法如下: 在项目根目录下,新建文件夹 package1 (即自定义的分包名为 package1 ) 文件夹 package1 内新建文件夹 pages 将需要放入分包的页面文件,转移到 /package1/pages 文件夹中 删除已转移到分包的页面在 app.js

    2024年02月12日
    浏览(49)
  • 使用vscode开发原生微信小程序

    文章目录 前言 一、vscode需要下载哪些插件? 二、相关配置 总结 由于微信小程序开发工具的弊端,我们可以使用vscode来开发微信小程序,只需要做好一下的配置即可. 1.安装微信小程序开发助手 2.wechat-snippet 3.Easy-WXLESS 1.打开设置 在settings.json中添加以下代码 由于微信小程序开发

    2024年02月16日
    浏览(55)
  • 快速上手微信小程序(纯原生)基于微信开发者工具+云开发

    最近开发一个小程序。因为体量实在不大,两张表,几个接口。便打算写原生的代码。没有使用uniapp等框架。记录一下一个小程序从搭建到审核发布的那些坑和经验做为学习笔记。 几个网站请收藏 你的小程序需要开发工具: 保姆级传送门 你的小程序需要一个身份证: 微信公

    2024年02月10日
    浏览(79)
  • Uniapp与原生微信小程序开发区别对比

    微信小程序:(微信小程序也可以不写wx:for-index和wx:for-item,默认为index和item`) uni-app:

    2024年02月15日
    浏览(57)
  • 微信小程序原生开发功能合集十六:系统主页实现

      本章实现小程序主页开发及对应逻辑处理,实现问卷填报相关功能,实现问卷查看、问卷查看、填报历史等功能的实现。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:   

    2024年02月10日
    浏览(46)
  • 微信小程序原生开发功能合集二:下拉选择组件封装

      本章实现小程序中下拉选择组件的封装实现,通过自定义组件的方式实现下拉选择功能,使用小程序的picker组件实现下拉数据的展示及相关自定义处理,封装数据加载过程,数据切换逻辑监听等。   本节实现select组件的开发说明,另使用nodejs创建express服务器,为远程

    2024年02月02日
    浏览(58)
  • 微信小程序原生开发功能合集十二:编辑界面的实现

      本章实现编辑界面的实现处理,包括各编辑组件的使用及添加数据保存数据流程的实现处理。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.ne

    2024年02月02日
    浏览(57)
  • UniApp项目中 使用微信小程序原生语言 进行开发

    wxcomponents 下放的是微信小程序原生代码写的组件。我进行了封装 在你下uniApp 项目的根目录创建一个 wxcomponents 名字千万不要错 京东、支付宝灯参考下面图片 官方文档也有介绍 然后在你需要引入原生功能的页面里面引入你的组件(我这里提前已经放过来了。在上面图可看到

    2024年02月04日
    浏览(71)
  • 微信小程序原生开发功能合集十五:个人主页功能实现

      本章个人主页功能实现,展示当前登录用户信息、个人主页、修改密码、浏览记录、我的收藏、常见问题、意见反馈、关于我们等界面及对应功能实现。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实

    2024年02月06日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包