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单页面应用进入页面加载所有 js 的问题

    解决 Vue 单页面应用进入页面加载所有 js 的问题需要使用到 webpack 的代码分割功能。 Webpack 提供了代码分割功能,通过将应用中的代码分割成多个块(chunk),可以实现按需加载,减少首次加载时间。 以下是详细攻略: 步骤一:配置 webpack 在 webpack.config.js 中进行配置,启用代码分割功能,并将其设置为按需加载。…

    Vue 2023年5月28日
    00
  • 关于VueRouter导入的全过程

    VueRouter是Vue.js官方提供的路由管理插件,可以帮助我们快速搭建单页应用,提供了基于Vue.js的路由机制。下面是关于VueRouter导入的全过程的详细攻略: 安装VueRouter 使用Vue.js框架中的VueRouter前,需要先安装VueRouter。在命令行中使用以下命令安装: npm install vue-router –sav…

    Vue 2023年5月28日
    00
  • vue中的get方法\post方法如何实现传递数组参数

    传递数组参数是前端开发中非常常见的需求,vue中的get和post方法也是我们日常开发中最常使用的API请求方式之一。下面是具体步骤: 一、利用axios的方式发送请求(Vue-Axios) 安装axios和Vue-Axios npm install axios vue-axios –save 在Vue中全局引入axios import Vue from …

    Vue 2023年5月29日
    00
  • 深入理解Vue响应式原理及其实现方式

    深入理解Vue响应式原理及其实现方式 什么是Vue响应式原理 Vue.js是一种用于构建交互式Web界面的渐进式JavaScript框架,可以帮助开发者更高效地构建Web应用。Vue的响应式原理是Vue最重要的特性之一,它允许开发者通过声明式数据绑定来管理应用的状态,并自动跟踪数据之间的依赖关系和更新视图,提高了开发效率并提供更好的用户体验。 在Vue的响应…

    Vue 2023年5月27日
    00
  • 如何获取vue单文件自身源码路径

    获取Vue单文件自身源码路径,需要使用Node.js中的__dirname变量。__dirname指的是当前文件所在的目录的路径。因此,我们可以利用该变量获取到Vue文件的路径和文件名。 以下是获取Vue单文件自身源码路径的完整攻略: 首先,需要在Vue单文件(例如,HelloWorld.vue)中添加如下代码: <script> export …

    Vue 2023年5月28日
    00
  • 如何使用vuex实现兄弟组件通信

    熟悉Vue框架的人都知道,在Vue组件之间传递数据的方法实在是太多了,包括props、$emit、$parent、$root等等,那么这些方法是否可以满足所有的组件通信需求呢?答案是不一定,有些情况下,我们需要一些更高级的方法来进行组件通信,这时候,Vuex就成了我们事半功倍的存在。 Vuex是什么?Vuex是一个专为Vue.js应用程序开发的状态管理模式。…

    Vue 2023年5月28日
    00
  • Vue.js实现可排序的表格组件功能示例

    当我们开发一些管理性质的网站时,表格是非常基本的需求。常见的表格功能有分页、排序、搜索等,其中销售额这类的表格,排序功能尤其重要。 Vue.js是一种渐进式JavaScript框架,具有轻量级、高效率、易上手等优点,因此成为了前端开发中的热门工具。下面介绍如何通过Vue.js实现可排序的表格组件功能示例。 第一步:拆分组件 首先将一个整体的表格组件拆分成多个…

    Vue 2023年5月29日
    00
  • Vue实现textarea固定输入行数与添加下划线样式的思路详解

    首先我们要明确需求:实现一个文本框,在输入文字达到固定的行数后(比如说4行),禁止继续输入,同时在每一行末尾添加下划线样式。 思路概述 我们可以通过Vue指令的方式来实现这一需求。具体而言,我们需要通过以下步骤来实现: 监听文本框输入事件,当输入框的文字超过指定行数时禁止继续输入; 在每一行末尾添加下划线样式; 实现步骤 1. 监听输入事件 我们在Vue的d…

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