element el-table render-header自定义复选框

2023-11-19

项目中需要对列表数据进行批量处理,表头增加复选框,并关联列表数据,el-table提供解决方法:实现多选非常简单: 手动添加一个el-table-column,设type属性为selection即可;尝试后在我的项目中不适用。于是找到另一种render-header列标题 Label 区域渲染,使用的Function(h, { column, $index }),具体实现:

选中列表数据,点击批量操作,拿到所选中数据进行下一步处理;

表格封装组件中el-table-column添加render-header属性

方法中定义renderHeaderCheckbox方法:

/** 表头增加复选框 */
    renderHeaderCheckbox (h, { column }) {
      return h(
        'span',
        [
          h('el-checkbox', {
            props: {
              value: this.ksCheckedAll,//表头复选框的状态值(全选/反选)
              indeterminate: this.ksIndeterminate,//半选状态值
            },
            style: 'display:inline-flex;margin-right:15px;',
            on: {
              change: this.select
            }
          }),
          h('span', column.label),
        ]
      )
    },

复选框改变状态时调用this.select方法:

  /** 是否勾选表头 */
    select (checked) {
      //全选/全不选
        //dataValue为表格绑定的数据
      this.dataValue.forEach(item => {
        this.$set(item, 'checked', checked)
      })
       //batchKsArr为所选中的数据组成的数组
      if (checked) {
        this.batchKsArr = this.dataValue
      } else {
        this.batchKsArr = []
      }
      this.$store.commit('ksAccount/changeKsCheckedAll', checked)//修改仓库全选的值
    },

 每条数据前的复选框通过插槽渲染:

 <div v-if="item.batchKsCheckbox">
              <template>
                <el-checkbox v-model="scope.row.checked"
                             :checked="scope.row.checked"
                             @change="changeKsCheckbox(scope.row.checked,scope.$index, scope.row)"></el-checkbox> {{scope.row.account_id  }}
              </template>
            </div>

点击每条数据前的复选框触发事件:

    async changeKsCheckbox (val, index, row) {
      this.batchKsArr = []
      this.dataValue.find(item => {
        if (item.checked) {
          this.batchKsArr.push(item)
        }
      })
    },

最后监听我需要的数组:

    batchKsArr: {
      handler (value) {
        if (value.length < this.dataValue.length) {
          this.$store.commit('ksAccount/changeKsIndeterminate', true)
          this.$store.commit('ksAccount/changeKsCheckedAll', false)
        } else if (value.length = this.dataValue.length) {
          this.$store.commit('ksAccount/changeKsIndeterminate', false)
          this.$store.commit('ksAccount/changeKsCheckedAll', true)
        }
        if (value.length == 0) {
          this.$store.commit('ksAccount/changeKsCheckedAll', false)
          this.$store.commit('ksAccount/changeKsIndeterminate', false)
        }
      },
      deep: true
    }

哈哈哈哈,需求不难,但是我好像实现的有点复杂,做个记录,大家有简单方法可以相互讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element el-table render-header自定义复选框 的相关文章

随机推荐

  • 基于内容的图像检索系统设计与实现--颜色信息--纹理信息--形状信息--PHASH--SHFT特征点的综合检测项目,包含简易版与完整版的源码及数据!

    百度云提取源码以及数据包 直接下载压缩包解压就可以使用 数据就在压缩包文件dataset中 简化版 只有 颜色信息 纹理信息 形状信息 PHASH SHFT特征点的综合检测 百度云链接 提取码 6666 戳我 完整版 包含只有 颜色信息 纹
  • python3 字符串format 输出

    gt gt gt help FORMATING Traceback most recent call last File
  • 潜艇来袭(Qt官方案例-2维动画游戏)

    一 游戏介绍 1 开始界面 启动程序 进入开始界面 2 开始新游戏 点击菜单 File New Game 或者Ctrl N 进入新游戏 开始新游戏之后 会有一个海底的潜艇 和水面舰艇对战 计算机 自动控制潜艇 海底潜艇会隔段时间发射一枚鱼雷
  • Node输出日志的正确姿势

    背景 每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助调试程序 比如System out println或console log 解决后 就会将这些语句删除 周而复始 但是通过系统日志输出的日志格式都是这种 output conso
  • Android加载webView--setWebChromeClient默认不会显示弹窗

    1 设置自定义浏览器客户端 webView setWebChromeClient new MyWebChromeClient 2 onJsAlert就是弹窗 只会有一个 自定义弹出框 class MyWebChromeClient exte
  • VSCode关闭vue语法检查

    今天碰到一个这样的错误 Component name School should always be multi word 意思是组件名称 School 应该总是多个单词 解决办法 在vue config js中添加这样一句代码 lintO
  • QT实现动态翻译和语言切换

    QT GUI提供语言动态转换机制并辅以相应的工具方便programmer实现界面的多语言实时动态切换功能 实现语言动态切换的方法 一个注意 五个步骤 一个注意 实现QT工程的语言切换功能的一个关键点是所有的字符串都需要tr修饰符 例如 m
  • 【数据结构初阶】第七节.树和二叉树的基本操作

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 Java初阶数据结构 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 二叉树的快速构建 二 二叉树的遍历 2 1 前序遍历 2 2 中序遍历 2
  • 从计数器到分频电路

    一 计数器 1 计数器代码 计数器 顾名思义就是在时钟的节拍下进行计数 一个简单的N位计数器的代码如下所示 这个计数器从0计数到2 N 1 共计数了2 N个数 也就是N位计数器 1 module count parameter N 8 2
  • 微信小程序登录弹框问题

    1 getUserInfo 相信刚接触微信小程序开发的人都在想 官方给出的这个是什么意思 我来解释一下吧 还记得我们在最开始使用微信小程序的时候吗 第一次进一个微信小程序的时候会直接弹出来个框 询问我们是否允许哟用户获取信息 微信官方觉得这
  • C++11 之 std::function & std::bind & lambda 表达式

    文章目录 std function std bind lambda 表达式 总结 c 11新增了 std function std bind lambda 表达式等封装使函数调用更加方便 std function 讲 std functio
  • 生活之你为什么不学习

    最近在别人的空间 我看到了八句话 你有什么理由不学习 感觉说得挺有鸡血的 1 你不能把这个世界让给你所鄙视的人 2 成功的速度一定要超过父母老去的速度 3 可怕的不是别人比你优秀 而是比你优秀的人比你还努力 4 我努力的目的是让我的妈妈买东
  • 【华为OD机试python】按身高和体重排队【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某学校举行运动会 学生们按编号 1 2 3 n 进行标识 现需要按照身高由低到高排列 对身高相同的人 按体重由轻到重排列 对于身高体重都相同的人 维持原有的编号顺序关
  • 最全的交叉编译Makefile讲解

    最近正在搞交叉编译 参考很多博客 学习了一下Makefile的编写 记录一下Makefile内代码是什么意思 代码如下 简单的hello ko的makefile ifneq KERNELRELEASE obj m hello o else
  • [CUDA] 快速入门CUDA(1)-基本了解和HelloWorld

    CUDA基础 文章目录 CUDA基础 1 CUDA简介 2 GPU和CPU架构的不同之处 3 查看GPU硬件信息 4 需要建立的基本概念 5 总结 1 CUDA简介 CUDA的全程是Computer Unified Device Archi
  • 树莓派4B(buster)的源更换为北外(清华)国内源

    树莓派4B buster 的源更换为北外 清华 国内源 1 登陆到树莓派 ssh pi your raspi IP 2 备份源文件 sudo cp etc apt sources list etc apt sources list bak
  • GoogLeNet论文详解

    GoogLeNet 1 Introduction 得益于深度学习的优势和更强大的卷积神经网络的出现 图像分类和目标检测的准确率发生了令人意想不到的进步 在2014年的ILSVRC比赛中 GoogLeNet取得了第一名的成绩 所用模型参数不足
  • 详解如何修改Linux文件权限

    参考 详解如何修改Linux文件权限 Linux文件权限详解 在Linux系统中 可以使用chmod命令来修改文件的权限 该命令用于更改文件或目录的读取 r 写入 w 和执行 x 权限 以下是一些详细的说明和示例 使用数字表示权限 r 读取
  • Golang教程:(十六)结构体

    原文 https golangbot com structs 欢迎来到Golang系列教程的第十六篇 什么是结构体 结构体 struct 是用户自定义的类型 它代表若干字段的集合 有些时候将多个数据看做一个整体要比单独使用这些数据更有意义
  • element el-table render-header自定义复选框

    项目中需要对列表数据进行批量处理 表头增加复选框 并关联列表数据 el table提供解决方法 实现多选非常简单 手动添加一个el table column 设type属性为selection即可 尝试后在我的项目中不适用 于是找到另一种r