element踩坑记录之 element table 获取所点击行数据

简介: element踩坑记录之 element table 获取所点击行数据

在做项目时自定义一个element table,想要获取点击行的数据传给别的页面,一开始百度到一个笨方法,在<el-table>标签上添加一个@row-click方法来获取点击行数据,但是会覆盖你这一行别的按钮事件,查看文档发现更简单的方法。

实现方法为:通过 Scoped slot 可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据

例子:

<template>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column
      label="日期"
      width="180">
      <template slot-scope="scope">
        <i class="el-icon-time"></i>
        <span style="margin-left: 10px">{{ scope.row.date }}</span>
      </template>
    </el-table-column>
    <el-table-column
      label="姓名"
      width="180">
      <template slot-scope="scope">
        <el-popover trigger="hover" placement="top">
          <p>姓名: {{ scope.row.name }}</p>
          <p>住址: {{ scope.row.address }}</p>
          <div slot="reference" class="name-wrapper">
            <el-tag size="medium">{{ scope.row.name }}</el-tag>
          </div>
        </el-popover>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template slot-scope="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    },
    methods: {
      handleEdit(index, row) {
        console.log(index, row);
      },
      handleDelete(index, row) {
        console.log(index, row);
      }
    }
  }
</script>

注意需要在<el-table-colum>标签外边包裹一个<template>,里面加上slot-scope="scope"字段,这个是最重要的,然后在<el-table-colum>定义一个点击事件参数为(scope.row),就可以获得row.name row.index等自己的字段。

展示图:


相关文章
element el-cascader动态编辑赋值后,不回显的解决方法(整理)
element el-cascader动态编辑赋值后,不回显的解决方法(整理)
|
10天前
|
移动开发 前端开发 JavaScript
Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group
本文介绍了Twaver HTML5中Data类的其他功能函数,如获取和操作子网元的方法,以及组(Group)的概念和使用。文章通过示例代码展示了如何在React组件中创建组、添加图元到组中,并通过toChildren函数获取满足特定条件的图元。
24 0
Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group
|
3月前
|
JavaScript
vue项目中升级element ui(含常见报错及解决方案,如表格不显示,el-table无效, “__v_isRef“ is not defined,Use :deep() instead)
vue项目中升级element ui(含常见报错及解决方案,如表格不显示,el-table无效, “__v_isRef“ is not defined,Use :deep() instead)
46 0
|
机器人
Typecho弹出find Input author error怎么解决
Typecho弹出find Input author error怎么解决
88 0
|
11月前
element-ui和element-plus的自定义列表格用法
element-ui和element-plus的自定义列表格用法
72 0
|
11月前
Element UI 中table的验证
Element UI 中table的验证
|
12月前
【element-ui用法】el-radio-group默认选择和数据回显问题的解决方案
【element-ui用法】el-radio-group默认选择和数据回显问题的解决方案
577 0
element table表格表头动态渲染效果demo(整理)
element table表格表头动态渲染效果demo(整理)