Vue——vue3+element plus实现多选表格使用ajax发送id数组

news2025/1/20 18:23:14

代码来源:

Vue 3结合element plus(问题总结二)之 table组件实现多选和清除选中(在vue3中获取ref 的Dom)_multipletableref.value.togglerowselection()打印出来的是u_子时不睡的博客-CSDN博客

前言

为了实现批量删除功能的功能需要用到多选表格,自己用vue实现很麻烦,遂上上网查找.

终于找到了上面的文章。

实现结果图

如下一个是前端的图,一个是后端的图,点击批量删除之后就可以看见三个元素的id被发送到后端了。虽然前端页面还是没有变,不过实际已经算是删除了。要刷新页面可以在success回调方法中再获取一次列表数据。

代码实现

实现思路

按照原文博主说的,因为这个表格代码原本是用ts写的,有两个方法用ts时可以找到,用js里面找不到,原因是vue3获取ref绑定的dom元素失败,并且好像也不能在onMounted钩子函数里面获取到(没试过)。然后直接在setup或是onMounted里面使用了getCurrentInstance()获取了整个vue组件的实例。

然后在实例的refs上发现了表格绑定的那一个dom元素的代理对象,获取到了这个dom元素的代理响应式对象。

在该实例的refs区域可以看见有表格的dom元素绑定的ref变量的代理对象

Vue3 学习笔记 —— toRefs_...torefs_tanleiDD的博客-CSDN博客看这个toRefs方法

 这里如果不使用teRefs转的话就有如下,说它不是方法,也就是使用代理对象没法使用里面的方法

用了toRefs它就说收到一个普通对象?什么傻逼玩意真有它的.


 

然后使用toRefs方法_将表格的代理对象转换转换为普通对象,普通对象里面属性都变成了ref的,然后可以看见里面有需要的两个方法。

下图是直接表格的代理对象转换为普通对象后找到的两个方法结果

 

前端控制台输出

后端代码

    @PostMapping("/posts/add2")
    public String add2post(@RequestBody Content content){
        for(int i=0;i<content.getContent().length;i++)
        System.out.println(content.getContent()[i]);
        if(content!=null)
            return "success";
        return "error";
    }

前端代码

<template >
    <div id="shoplist">
        <el-table ref="multipleTableRef" :data="data.arr" style="width: 100%" height="90%" stripe
            @selection-change="handleSelectionChange">
            <el-table-column type="selection" width="40" />
            <el-table-column property="shopname" label="店名" width="120" show-overflow-tooltip />
            <el-table-column property="score" label="评分" sortable width="80" />
            <el-table-column property="sales" label="销量" sortable width="80" />
            <el-table-column property="type" label="类型" width="70" />
        </el-table>

        <div style="margin-top: 20px; margin-left:20px">
            <el-button @click="toggleSelection(data.arr)">全选</el-button>
            <el-button @click="toggleSelection()">清除</el-button>
            <el-button @click="delete_post">批量删除</el-button>
        </div>
    </div>
</template>
  
<script>
import { onMounted, ref } from 'vue';
import { getCurrentInstance } from 'vue'
import { reactive, toRefs } from '@vue/reactivity';
import $ from 'jquery'
export default {
    name: 'ElementView',
    setup() {
        const instance = getCurrentInstance(); //这个玩意不能用在生产环境好像
        const multipleTableRef = ref(null);
        const multipleSelection = ref([])
        const data2 = ref([])
        const list = reactive([])



        var toggleSelection = (rows) => {
            console.log(instance) //输出了这个vue组件的实例对象
            console.log(instance.refs.multipleTableRef)  //输出了一个代理对象
            var ultipleTabInstance = toRefs(instance.refs.multipleTableRef)//将代理对象转换为了普通对象,不转会报错
            console.log(ultipleTabInstance);  //输出了一个普通对象
            if (rows) {
                rows.forEach(row => {
                    ultipleTabInstance.toggleRowSelection.value(row, undefined)
                    console.log(row)
                });
            } else {
                ultipleTabInstance.clearSelection.value()
            }
        }
        //备用方案
        onMounted(() => {
            // console.log(multipleTableRef);
        })
        //该方法用于将表格数据赋给ref变量
        var handleSelectionChange = (val) => {  
            multipleSelection.value = val;
        }

        //此处是实现删除逻辑的方法
        var delete_post = () => {
            data2.value = multipleSelection.value
            console.log(data2.value)
            data2.value.forEach(a => {
                console.log(a.id)
                list.unshift(a.id)
            })
            console.log(list)

            //将该id数组传到后端进行批量删除
            $.ajax({
                url: "http://127.0.0.1:4000/posts/add2",
                type: "POST",
                headers: {
                    'Content-Type': 'application/json;charset=utf-8',
                },
                data: JSON.stringify({ "content": list })
                , success(resp) {
                    if (resp === "success") {
                        console.log("caa")
                    }
                }
            });
        }
        //到这里为止都是加上的
        var data = reactive({
            arr: [{
                id: 1,
                shopname: "沙县小吃",
                score: 5.5,
                sales: 1200,
                hh: 12,
                type: "快餐"
            },
            {
                id: 2,
                shopname: "法式牛排餐厅",
                score: 7.5,
                sales: 2400,
                hh: 12,
                type: "西餐"
            },
            {
                id: 3,
                shopname: "沙县大吃",
                score: 6.5,
                sales: 200,
                hh: 12,
                type: "快餐"
            },
            {
                id: 4,
                shopname: "南昌瓦罐汤",
                score: 6.9,
                sales: 2400,
                hh: 12,
                type: "快餐"
            },
            ]
        })

        return {
            data,
            multipleTableRef,
            toggleSelection,
            handleSelectionChange,
            delete_post,
            data2,
        }
    },
}
</script>
  
<style></style>
  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/966785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux编程第一部分总结

C多线程安全原则 对象析构很复杂&#xff0c;我们采用shared_ptr和weak_ptr来做 enable_shared_from_this<>是用来做回调的&#xff0c;因为多线程中可能对象的生命周期比传出去的this指针短&#xff0c;同时为了不延长对象的生命周期&#xff0c;我们把shared_ptr转成we…

单目标应用:基于麻雀搜索算法SSA的微电网优化调度MATLAB

一、微网系统运行优化模型 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、麻雀搜索算法简介 麻雀搜索算法 (Sparrow Search Algorithm, SSA) 是一种新型的群智能优化算法&#xff0c;于2020…

Scalene:Python CPU+GPU+内存分析器,具有人工智能驱动的优化建议

一、前言 Python 是一种广泛使用的编程语言&#xff0c;通常与其他语言编写的库一起使用。在这种情况下&#xff0c;如何提高性能和内存使用率可能会变得很复杂。但是&#xff0c;现在有一个解决方案&#xff0c;可以轻松地解决这些问题 - 分析器。 分析器旨在找出哪些代码段…

一文吃透KMP算法

前言&#xff1a;今天&#xff0c;我们要来学习的字符串的高效匹配算法&#xff0c;KMP算法&#xff0c;用于在一个文本串中查找一个模式串的出现位置。相比于朴素的字符串匹配算法&#xff0c;KMP算法具有更低的时间复杂度&#xff0c;KMP算法的核心思想是利用已匹配的部分信息…

如何在Spring Boot应用中使用Nacos实现动态更新数据源

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

zabbix概述及简单的在centos7安装Zabbix5.0及添加监控对象

目录 一、概述 1、概念 2、Zabbix构成&#xff1a; 3、Zabbix的专业术语包括&#xff1a; 4、Zabbix的工作流程如下&#xff1a; 5、Zabbix的进程包括&#xff1a; 6、Zabbix的监控框架包括&#xff1a; 7、Zabbix的配置流&#xff1a; 8、zabbix程序结构 9、 zabbix…

基于YOLOV8模型的农作机器和行人目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOV8模型的农作机器和行人目标检测系统可用于日常生活中检测与定位农作机和行人目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标…

CXL.cache H2D/D2H 请求响应对应关系

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

【大数据】Apache Iceberg 概述和源代码的构建

Apache Iceberg 概述和源代码的构建 1.数据湖的解决方案 - Iceberg1.1 Iceberg 是什么1.2 Iceberg 的 Table Format 介绍1.3 Iceberg 的核心思想1.4 Iceberg 的元数据管理1.5 Iceberg 的重要特性1.5.1 丰富的计算引擎1.5.2 灵活的文件组织形式1.5.3 优化数据入湖流程1.5.4 增量…

手写RPC框架--3.搭建服务注册与发现目录结构

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 搭建服务注册与发现目录结构 搭建服务注册与发现目录结构a.基于ZooKeeper的服务发现b.搭建基础工程c.基础代码d.编写架子工程e.创建zookeeper基础目录结构 搭建服务注册与发现…

ISP——3A算法

目录 前沿一. 自动曝光AE1.1. 自动曝光1.2. 18%灰1.3. 测光区域1.4. 摄影曝光加法系统1.5. AE算法1.5.1. 考虑事项1.5.2. AE实现过程 1.6. AE算法 二. 自动对焦AF2.1. 什么是自动对焦2.2. 图像清晰度评价方法2.2.1. Brenner 梯度函数2.2.2. Tenengrad 梯度函数2.2.3. Laplacian…

设计模式-8--模板方法模式(Template Method Pattern)

一、什么是模板方法模式&#xff08;Template Method Pattern&#xff09; 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤的实现延迟到子类中。模板方法模式允许在不改变算法的…

多机单目标跟踪Cross-Drone Transformer Network for Robust Single Object Tracking

1. 摘要 无人机已被广泛用于各种应用&#xff0c;如空中摄影和军事安全&#xff0c;因为与固定摄像机相比&#xff0c;无人机具有高机动性和广阔的视野。多架无人机跟踪系统可以通过收集不同视角的互补视频片段来提供丰富的目标信息&#xff0c;特别是当目标在某些视角下被遮挡…

微信小程序分包-主包尺寸 (不包合插件) 应小于 1.5 M

目录 起因 分包 最后 起因 更新一个之前的小程序&#xff0c; 上传的时候提示主包尺寸 (不包合插件) 应小于 1.5 M 怎么办&#xff1f;查看教程啊 开发者可通过开发者工具中的性能扫描工具提前发现代码中的可优化项&#xff1a; 1. 代码包不包含插件大小超过 1.5 M 【建议】…

1777_树莓派截图功能实现

全部学习汇总&#xff1a; GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 最近入手了树莓派的3B版本&#xff0c;安装了官方推荐的Debian版本。之前使用Linux的几个发行版本的时候&#xff0c;系统中通常会有KDE等集成的截图工具&…

第一个实例:QT实现汽车电子仪表盘

1.实现效果 1.1.视频演示 QT 实现汽车仪表盘 1.2.实现效果截图 2.生成的安装程序 此程序是个windows下的安装程序,可以直接安装,看到汽车仪表盘的实现效果,安装程序从下面链接下载: 【免费】使用QT实现的汽车电子仪表盘,在windows下的安装程序资源-CSDN文库 3.功能概述…

go语言基础操作--二

a : 10str : "mike"//匿名函数&#xff0c;没有函数名字 形成一个闭包,函数定义&#xff0c;还没有调用f1 : func() { //:自动推到类型fmt.Println("a ", a)fmt.Println("str ", str)}f1()//给一个函数类型起别名 这个写法不推荐type FuncType …

存储成本降低85%,携程历史库场景的降本实践

携程&#xff0c;一家中国领先的在线票务服务公司&#xff0c;从 1999 年创立至今&#xff0c;数据库系统历经三次替换。在移动互联网时代&#xff0c;面对云计算卷积而来的海量数据&#xff0c;携程通过新的数据库方案实现存储成本降低 85% 左右&#xff0c;性能提升数倍。本文…

TensorRT来加速YOLO v5推理与检测

TensorRT来加速YOLO v5推理与检测 文章目录 TensorRT来加速YOLO v5推理与检测TensorRT简介一、TensorRT安装1. 电脑基础环境2. 查看 cuda 版本3. 安装TensorRT4. 验证TensorRT 二、YOLO v5模型导出函数1.onnx 模型导出&#xff08;def export_onnx&#xff08;&#xff09;函数…

nmon性能监控工具介绍【杭州多测师_王sir】

nmon监控工具 (nmon监控centos6X)1) 工具准备nmon16X(性能监控)和nmon_analyser(性能报告分析器)&#xff1b;2) 下载nmon页面地址:http://nmon.sourceforge.net/pmwiki.php?nSite.Download3) 下载指定版本nmon到centos6X:wget https://nchc.dl.sourceforge.net/project/nmon…