Element-UI技巧分享:自定义拖拽列表的制作方法

这篇具有很好参考价值的文章主要介绍了Element-UI技巧分享:自定义拖拽列表的制作方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

部分数据来源:ChatGPT

引言

        当我们使用 Element-UI 的自定义拖拽列表时,有时候需要根据拖拽的字段位置,将数据组成不同的列表进行显示。这种情况下,我们可以通过一些简单的操作,来实现自定义拖拽列表中的分类展示。

在本文中,我们将介绍如何使用 Element-UI 和第三方组件库 vuedraggable ,快速实现自定义拖拽列表分类功能。

第一步:安装 vuedraggable

在使用 vuedraggable 之前,我们需要安装这个第三方组件库,执行以下命令即可:

npm install vuedraggable

第二步:引入 vuedraggable

使用 vuedraggable,我们需要在 Vue 项目中引入这个组件,具体方法如下:

import Vue from 'vue';
import draggable from 'vuedraggable';
Vue.component('draggable', draggable);

在这里,我们使用 import 引入 vuedraggable 组件,并在 Vue 实例中注册它,这样就可以在页面中直接使用了。

第三步:分类数据

        在传递数据给拖拽列表组件之前,我们需要将数据进行分类。我们可以将不同类别的数据分别存储在一个数组中,并且将它们存储在一个对象中。具体的代码实现如下:

// 原始数据列表
const data = [
  { id: 1, name: 'Apple', type: 'fruit' },
  { id: 2, name: 'Orange', type: 'fruit' },
  { id: 3, name: 'Carrot', type: 'vegetable' },
  { id: 4, name: 'Spinach', type: 'vegetable' }
];

let groupedData = {}; // 用于存储分类后的数据

// 循环遍历原始数据,将其分类并存储
data.forEach(item => {
  // 如果当前项存在分类,将其添加到分类下
  if(groupedData[item.type]) {
    groupedData[item.type].push(item);
  } else {
    groupedData[item.type] = [item]; // 如果分类不存在,创建一个新分类存储
  }
})

在上述代码中,我们首先定义了一个原始数据列表和一个用于存储分类后数据的对象。通过一个foreach循环,遍历原始数据,将其分类到相应的数组中。最终,我们将分类后的数据存储在对象 groupedData 中。

第四步:渲染页面

        分类后,我们就可以将分类数据传递到拖拽列表组件中,并在页面上展示它们。首先,我们需要渲染出一个容器元素,再在里面生成两个拖拽列表容器。具体的代码如下:

<el-container>
  <el-header>
    <el-row>
      <el-col span="12"><h4>Fruit</h4></el-col>
      <el-col span="12"><h4>Vegetable</h4></el-col>
    </el-row>
  </el-header>
  <el-main>
    <el-row>
      <el-col span="6">
        <draggable v-model="groupedData.fruit" tag="ul">
          <li v-for="item in groupedData.fruit" :key="item.id">{{ item.name }}</li>
        </draggable>
      </el-col>
      <el-col span="6">
        <draggable v-model="groupedData.vegetable" tag="ul">
          <li v-for="item in groupedData.vegetable" :key="item.id">{{ item.name }}</li>
        </draggable>
      </el-col>
    </el-row>
  </el-main>
</el-container>

在上面的代码中,我们使用 Element-UI 中的 el-container、el-header、el-main、el-row 和 el-col 等组件来排版布局,生成了两个拖拽列表容器,并把集合传递给容器。这样,列表中的每个项都将按照分类进行显示。其中,我们使用了 v-model 指令来与 groupedData 对象进行双向数据绑定。

以上步骤,我们通过 v-for 指令来遍历 groupedData 中的 fruit 和 vegetable 数组,并使用 key 属性来帮助 Vue 正确渲染每个容器中的数据。

完整代码示例

下面是一份完整的代码示例,包括了以上步骤中的所有代码:

<template>
  <el-container>
    <el-header>
      <el-row>
        <el-col span="12"><h4>Fruit</h4></el-col>
        <el-col span="12"><h4>Vegetable</h4></el-col>
      </el-row>
    </el-header>
    <el-main>
      <el-row>
        <el-col span="6">
          <draggable v-model="groupedData.fruit" tag="ul">
            <li v-for="item in groupedData.fruit" :key="item.id">{{ item.name }}</li>
          </draggable>
        </el-col>
        <el-col span="6">
          <draggable v-model="groupedData.vegetable" tag="ul">
            <li v-for="item in groupedData.vegetable" :key="item.id">{{ item.name }}</li>
          </draggable>
        </el-col>
      </el-row>
    </el-main>
  </el-container>
</template>

<script>
import draggable from "vuedraggable"; // 引入拖拽组件

export default {
  components: {
    draggable,
  },
  data() {
    return {
      data: [
        { id: 1, name: "Apple", type: "fruit" },
        { id: 2, name: "Orange", type: "fruit" },
        { id: 3, name: "Carrot", type: "vegetable" },
        { id: 4, name: "Spinach", type: "vegetable" },
      ],
      groupedData: {}, // 用于存储分类后的数据
    };
  },
  mounted() {
    this.groupData(); // 分类数据并存储
  },
  methods: {
    /**
     * 将数据按照分类进行分组并存储到 groupedData 中
     */
    groupData() {
      this.data.forEach((item) => {
        if (this.groupedData[item.type]) {
          this.groupedData[item.type].push(item);
        } else {
          this.groupedData[item.type] = [item];
        }
      });
    },
  },
};
</script>

在完整的代码示例中,我们首先引入 vuedraggable 组件并注册,接着在数据对象中定义了一个原始数据列表和一个用于存储分类后数据的对象 groupedData 。在 mounted 周期中调用 groupData 方法,实现将数据分类后存储到 groupedData 中。然后,在页面模板中,我们使用拖拽容器来显示数据,并将 groupedData 中不同类别的数据传播到不同的列表里面。

总结

        在本文中,我们介绍了如何使用 Element-UI 和第三方组件库 vuedraggable,实现自定义拖拽列表中的分类展示功能。通过一些简单的操作,实用性很强的功能实现起来非常容易。希望它能帮助你更好地应对分类展示数据的需求。文章来源地址https://www.toymoban.com/news/detail-480826.html

到了这里,关于Element-UI技巧分享:自定义拖拽列表的制作方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于Element-ui 表单弹窗列表选择封装

    基于Element-ui 表单弹窗列表选择封装

    不知道怎么描述这个东西了。。el-select下拉框大家都知道,但是下拉框只能选择一个,而且如果数据太多的话也不太容易选择,所以这里就是封装了组件包含对应的弹窗,就是能实现多选,而且列表也是分页展示的,选择完之后将对应的名称展示在文本框中,传给后端对应的

    2024年02月11日
    浏览(17)
  • element-ui的el-upload组件实现上传拖拽排序图片顺序(sortablejs)
  • Vue中使用element-ui el-dialog弹窗最大化还原,拖拽,动态改变大小

    Vue中使用element-ui el-dialog弹窗最大化还原,拖拽,动态改变大小

    创建对应的js文件   先在指定稳定文件创建js文件,如src下创建diaLog.js文件,部分会提示红色爆红,可以不予理会,可以根据需求修改,如:弹框可拉伸最小宽高。   2. 在main.js的引用   同时为了防止冲突,需要关闭closeOnClickModal(弹窗默认点击遮罩改为不关闭),并添加标签

    2024年02月11日
    浏览(19)
  • 随手记:使用sortable.js 实现element-ui el-table 表格上下拖拽排序

    需求场景: 表格可以实现上下拖拽row实现新排序 首先,安装sortable.js  引入表格排  全局挂在组件 使用页面引入 使用sortable.js表格一定要有唯一的row-key,一般绑定的是id,不然拖拽会不生效 data声明 sortableContainer: null,为的是后面如果有需要可以做销毁操作   因为我这里是表

    2024年02月22日
    浏览(15)
  • 修改Element-ui中的Sidebar列表下拉框子项的宽度

    修改Element-ui中的Sidebar列表下拉框子项的宽度

    vue项目引入element-ui的侧边栏时,当调整sidebar侧边栏大小为180px时,下拉列表子项的宽度会超出(默认为200px)。 加入方式二进行修改更简便 如图所示: 列表的默认样式中的子项宽度未能正确修改成和父级的一样, 即 ul 下的 li 未能和 ul 保持一样的宽度。 1、浏览器F12打开元

    2024年02月16日
    浏览(14)
  • element-ui checkbox 组件源码分享

    element-ui checkbox 组件源码分享

    简单分享 checkbox 组件,主要从以下三个方面来分享: 1、组件的页面结构 2、组件的属性 3、组件的方法 一、组件的页面结构 二、组件的属性 2.1 value / v-model 属性,绑定的值,类型 string / number / boolean,无默认值。 首先讨论单个 checkbox,通过 props 接收 父组件传递过来的 va

    2024年03月24日
    浏览(11)
  • 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    我们在开发后台时肯定避免不了上传图片的功能 例如: 上传图片回显 上传完成 : 预览查看 , 删除等 如果是图片列表,还可能让你拖动图片排序 有的后台项目可能要给图片添加水印,添加标记 有的后台可能要炫酷一点 添加进度条功能 现在我们要完成上面的一系列功能,这里我

    2024年02月16日
    浏览(17)
  • element-ui表单自定义校验

    element-ui表单自定义校验

    1.问题描述 项目开发过程中,遇到表单校验,这次的校验规则比较严,element-ui表单自带的校验完全解决不了问题。 2.解决方法 使用elementui表单校验中的自定义校验,validUsername是自定义的校验方法名称 2.1 定义表单校验: 2.2 自定义校验方法: 注意:方法中一定义要返回call

    2024年02月11日
    浏览(18)
  • element-ui表格自定义动态列

    element-ui表格自定义动态列

    实现效果 具体功能 拖拽表头改变宽度 限制最小宽度, 实时保存设置。 隐藏列 选中列隐藏, 不显示在表格中。 “勾选” 列和\\\"操作\\\" 列不可隐藏, 并且不包含在列控制组件中。 隐藏后, 无论是否冻结均不显示。有特殊标识则要另外做判断。 列冻结 开启时, 表示选中列靠左冻结

    2024年01月24日
    浏览(11)
  • Element-UI表格自定义背景颜色

    Element-UI表格自定义背景颜色

    笔记 1.如图所示 2. 自定义样式         此处自定义设置时要加 /deep/、important ,否则不生效; 清除鼠标经过时的背景颜色: /deep/.el-table tbody tr:hovertd{     background-color: unset !important; } * 如果未设置!important该效果不生效 自定义样式时使用f12查看元素,找到对应元素的

    2024年02月15日
    浏览(20)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包