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

获取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日

相关文章

  • vue中v-for数据状态值变了,但是视图没改变的解决方案

    当 Vue 中使用 v-for 指令循环渲染数据时,有些情况下会出现数据状态值变了,但是视图没有更新的情况。这通常是由于 Vue 的响应式数据机制以及 JavaScript 原始类型和引用类型的特性所致。 以下是两个示例: 示例一 当循环渲染一个父子组件的情况下,子组件中的数据状态值变化导致父组件视图没有更新。 解决方法: 将父组件的数据状态复制一份到子组件…

    Vue 2023年5月29日
    00
  • Axios在vue项目中的封装步骤

    Axios是一个基于promise的HTTP客户端,可用于在浏览器和Node.js中发送数据请求。在Vue项目中使用Axios进行数据请求可以方便快捷地实现前后端交互。下面我们将介绍Axios在Vue项目中的封装步骤。 1. 安装Axios 打开终端,通过npm安装Axios: npm install axios 2. 创建Axios服务 在Vue项目中,可…

    Vue 2023年5月28日
    00
  • Vuex拿到state中数据的3种方式与实例剖析

    来详细讲解“Vuex拿到state中数据的3种方式与实例剖析”。 1. 3种获取state数据的方式 Vuex中,我们可以通过以下3种方式来获取state中的数据: 1.1 在组件中通过$store.state.xxx获取 通过在组件中访问$store.state.xxx,可以获取到store中某个模块的state数据,举个例子:如果我们想拿到store中名…

    Vue 2023年5月28日
    00
  • Vue的data、computed、watch源码浅谈

    Vue的data、computed、watch源码浅谈 Vue.js是一个开源的前端框架,它实现了数据绑定和组件化的开发模式。在Vue.js中,数据存储在data对象中,并通过数据绑定的方式实现数据响应式更新。此外,Vue.js还实现了computed和watch功能,用于处理数据的计算和监听。 在Vue.js的源码中,data、computed、watch…

    Vue 2023年5月29日
    00
  • JavaScript实现的圆形浮动标签云效果实例

    下面是实现“JavaScript实现的圆形浮动标签云效果实例”的完整攻略: 1. 实现思路 要实现圆形浮动标签云效果,我们需要根据标签数量生成标签,并随机赋予标签位置和颜色等属性,随着页面滚动,标签应该在页面中随机漂浮。实现的大致思路如下: 准备标签数据; 创建标签元素,设置属性和样式; 随机位置和颜色等属性; 将标签添加到页面中; 定时器控制标签漂浮效果。…

    Vue 2023年5月29日
    00
  • Vue项目中ESLint配置超全指南(VScode)

    下面我将详细解释如何在Vue项目中配置ESLint,并使用VS Code进行代码提示和自动修复。 步骤一:安装ESLint 首先,我们需要在Vue项目中安装ESLint和相关依赖包: npm install eslint eslint-plugin-vue –save-dev 其中,eslint-plugin-vue用于支持Vue文件的ESLint检查。 …

    Vue 2023年5月27日
    00
  • VUE渲染后端返回含有script标签的html字符串示例

    讲解 “VUE渲染后端返回含有script标签的html字符串示例” 的完整攻略如下: 问题描述 当在Vue应用程序中通过Ajax请求后端并返回一个包含 script 标签的 HTML 字符串时,Vue在解析这段字符串并渲染在 DOM 中时,由于这段 HTML 字符串中的代码被当作文本节点处理,导致 script 标签内的 JavaScript 代码不会被执…

    Vue 2023年5月27日
    00
  • vue自定义指令实现仅支持输入数字和浮点型的示例

    让我们开始讲解Vue自定义指令实现仅支持输入数字和浮点型的攻略。 简介 Vue.js是一个渐进式的JavaScript框架,通过指令和组件来扩展HTML。Vue自定义指令是一种自定义的指令,它扩展了现有的浏览器DOM元素的行为。本次攻略将介绍如何使用Vue自定义指令实现仅支持输入数字和浮点型。 实现方式 Vue自定义指令可以通过Vue.directive()…

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