zoukankan      html  css  js  c++  java
  • el-table行点击事件row-click与列按钮事件冲突

    需求简述

    表格用el-table实现,操作列的编辑按钮点击事件正常实现。现要为行加一点击事件,即row-click。加上后,发现点击操作列的编辑按钮时,会触发按钮本身事件,同时会触发行点击事件。第一版代码如下:

    <template>
        <el-table :data="tableData" border @row-click="rowClick">
            <el-table-column prop="date" label="日期" width="150"></el-table-column>
            <el-table-column prop="name" label="姓名" width="120"></el-table-column>
            <el-table-column prop="province" label="省份" width="120"></el-table-column>
            <el-table-column prop="city" label="市区" width="120"></el-table-column>
            <el-table-column label="操作" width="100">
                <template slot-scope="scope">
                    <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
                </template>
            </el-table-column>
        </el-table>
    </template>
     
    <script>
     export default {
       methods: {
          handleClick () {
             console.log('我是行编辑按钮');
          },
          rowClick (row, column) {
             console.log('点击了某一行');
          }
       },
       data () {
         return {
           tableData: [
             { date: '2016-05-02', name: '王小虎', province: '上海', city: '普陀区' },
             { date: '2016-05-04', name: '王小二', province: '北京', city: '朝阳区' }
           ]
         };
        }
     };
    </script>

    原因分析

    编辑按钮的父元素是单元格,单元格父元素是行。所以编辑按钮在点击时,会产生“冒泡”。从而触发行点击事件。

    解决办法

    1.按钮是el-button标签,为点击事件加.native.stop ,即 @click.native.stop=“handleClick(scope.row)”

    2.按钮通过render函数渲染实现,render函数中自带event事件,不用传参,不用写e,直接e.stopPropagation()就可以,当然,加上e也没毛病。

    on:{
       click:e=>{
         e.stopPropagation();
        ....
    }
  • 相关阅读:
    Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
    Linux 下使用网易的SMTP服务器 发送邮件
    Spring-boot 最小demo
    go build 时报错 cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
    spark-shell 执行脚本并传入参数
    JVM
    spark
    spark
    linux
    linux
  • 原文地址:https://www.cnblogs.com/lemoncool/p/13724934.html
Copyright © 2011-2022 走看看