vue+element获取el-table某行的下标,根据下标操作数组对象方式

yizhihongxing

获取el-table某行的下标,可以通过以下步骤实现:

  1. el-table设置:row-key属性,用于标识每行的唯一标识符,例如:
<el-table :data="tableData" :row-key="row => row.id">
  <!-- 表头和列内容 -->
</el-table>
  1. 在需要获取下标的地方,通过this.$refs.table.$refs获取到el-table组件的实例,例如:
let table = this.$refs.table.$refs['table'];
  1. 调用table实例的$el属性获取到el-table的根元素,再通过querySelectorAll方法获取到所有行的元素,例如:
let rows = table.$el.querySelectorAll('.el-table__row');
  1. 遍历rows数组,判断当前行是否为目标行,如果是则返回该行的下标,例如:
let index = -1;
rows.forEach((row, i) => {
  if (row === targetRow) {
    index = i;
  }
});
  1. 根据下标操作数组对象,例如:
this.tableData[index].name = '新名称';

示例1:通过@row-click事件获取点击行的下标,再根据下标操作数组对象

<template>
  <div>
    <el-table :data="tableData" :row-key="row => row.id" ref="table" @row-click="handleRowClick">
      <!-- 表头和列内容 -->
    </el-table>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [
          { id: 1, name: '张三', age: 20 },
          { id: 2, name: '李四', age: 30 },
          { id: 3, name: '王五', age: 40 },
        ]
      }
    },
    methods: {
      handleRowClick(row) {
        let table = this.$refs.table.$refs['table'];
        let rows = table.$el.querySelectorAll('.el-table__row');
        let targetRow = rows.find(r => r.dataset.rowKey === row.id.toString());
        let index = -1;
        rows.forEach((r, i) => {
          if (r === targetRow) {
            index = i;
          }
        });
        if (index >= 0) {
          this.tableData[index].name = '新名称';
        }
      }
    }
  }
</script>

示例2:通过自定义列组件的props获取行数据,再根据行数据操作数组对象

<template>
  <div>
    <el-table :data="tableData" :row-key="row => row.id">
      <el-table-column label="姓名">
        <template slot-scope="scope">
          <name-input :row="scope.row" @input="handleNameInput"></name-input>
        </template>
      </el-table-column>
      <!-- 其他列 -->
    </el-table>
  </div>
</template>
<script>
  import NameInput from '@/components/NameInput';
  export default {
    components: { NameInput },
    data() {
      return {
        tableData: [
          { id: 1, name: '张三', age: 20 },
          { id: 2, name: '李四', age: 30 },
          { id: 3, name: '王五', age: 40 },
        ]
      }
    },
    methods: {
      handleNameInput(row, value) {
        let index = this.tableData.findIndex(item => item.id === row.id);
        if (index >= 0) {
          this.tableData[index].name = value;
        }
      }
    }
  }
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+element获取el-table某行的下标,根据下标操作数组对象方式 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • Vue3.2 新增指令 v-memo 用法详解(提高性能利器)

    我将为您详细讲解“Vue3.2 新增指令 v-memo 用法详解(提高性能利器)”的完整攻略。 简介 Vue 3.2 新增了 v-memo 指令,它专门用于对 Vue 组件进行记忆化优化。记忆化优化可以提高应用程序的运行效率,减少重复渲染和计算,从而大大提高应用程序的性能。 记忆化优化是一种重新运行的策略,该策略中,在组件生成后,不在计算过程中多次工作。所以…

    Vue 2023年5月29日
    00
  • vue3使用vue-router的完整步骤记录

    下面就是“Vue3使用Vue Router的完整步骤记录”的攻略。 使用Vue Router包 要使用Vue Router,首先需要安装vue-router包。可以使用npm安装,命令如下所示: npm install vue-router@next 创建路由实例 Vue Router的创建需要在Vue实例之前,因为Vue Router的实例也要在Vue实例…

    Vue 2023年5月27日
    00
  • three.js 利用uv和ThreeBSP制作一个快递柜功能

    下面我将详细讲解通过利用uv和ThreeBSP制作一个快递柜功能的完整攻略。 1. 什么是ThreeBSP ThreeBSP是一种能够用于对Three.js中的3D模型进行布尔运算(Union、Intersection、Difference)的工具。有了 ThreeBSP,我们就可以用简单的API调用对3D模型的形状进行编辑、剖分、重组等操作,非常方便。 2…

    Vue 2023年5月28日
    00
  • Vue3+Vite实现动态路由的详细实例代码

    下面我来详细讲解“Vue3+Vite实现动态路由的详细实例代码”的完整攻略。 1. Vite项目基础搭建 首先,我们需要创建并启动一个Vite项目。可以使用命令行工具在要创建项目的目录下执行以下命令: npm init vite-app my-project cd my-project npm install npm run dev 上述命令意义分别为:使用…

    Vue 2023年5月28日
    00
  • Vue2中无法检测到数组变动的原因及解决

    当我们使用 Vue2 中的响应式系统时,可以通过 Vue.set 或者直接修改一个数组中的元素来触发视图的更新。但是,如果我们使用数组的方法(比如 push、pop、shift、unshift、splice、sort 或者 reverse)去修改数组,Vue2 中是无法直接检测到数组变动的,这是因为 Vue2 的响应式系统是通过 Object.defineP…

    Vue 2023年5月28日
    00
  • 解决vue select当前value没有更新到vue对象属性的问题

    我将为您详细讲解“解决Vue Select当前Value没有更新到Vue对象属性的问题”的完整攻略。 简介 在Vue开发中,我们通常会使用Vue Select组件来实现下拉选择框。但是在使用过程中,会发现Vue Select的value属性不能够及时更新到Vue对象中的属性,导致无法实现数据的双向绑定。本文将为大家提供解决这个问题的完整攻略。 解决方案 解决…

    Vue 2023年5月28日
    00
  • 利用Promise自定义一个GET请求的函数示例代码

    下面是利用 Promise 自定义一个 GET 请求的函数示例代码的完整攻略。 1. 准备工作 在开始编写代码之前,需要先了解一下使用 Promise 实现异步请求的基本步骤: 创建一个 Promise 对象,并返回它 在 Promise 对象中执行异步操作,并根据操作结果调用 resolve 或 reject 方法 调用 Promise 对象的 then …

    Vue 2023年5月28日
    00
  • Vue Element UI + OSS实现上传文件功能

    下面是“Vue Element UI + OSS实现上传文件功能”的完整攻略。 准备工作 1.安装Vue CLI并创建Vue项目。 2.引入Element UI和Aliyun OSS SDK。 <!– index.html –> <!DOCTYPE html> <html lang="en"> &l…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部