vue+elementui实现点击table中的单元格触发事件--弹框


Posted in Javascript onJuly 18, 2020

elementui中提供了点击行处理事件

查看位置: elementui的table事件

elementui的table中怎样点击某个单元格触发事件?

可以先看一下官网中table的自定义列模板代码

<template>
 <el-table
  :data="tableData"
  border
  style="width: 100%">
  <el-table-column
   label="日期"
   width="180">
   <template scope="scope">
    <el-icon name="time"></el-icon>
    <span style="margin-left: 10px">{{ scope.row.date }}</span>
   </template>
  </el-table-column>
  <el-table-column
   label="姓名"
   width="180">
   <template 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>{{ scope.row.name }}</el-tag>
     </div>
    </el-popover>
   </template>
  </el-table-column>
  <el-table-column label="操作">
   <template scope="scope">
    <el-button
     size="small"
     @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
    <el-button
     size="small"
     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>

点击单元格弹出框可以使用template-scope方式实现

父组件

<el-table
  :data="tableData"
  border
  style="width: 100%">
  <el-table-column
   label="编号"
   prop = "number"
   width="180">
   <template scope="scope">
    <div style="color:red;text-decoration:underline;cursor:pointer;" @click="getMore(scope.row)">{{ scope.row.date }}</div>
   </template>
  </el-table-column>
  <el-table-column
   label="名称"
   prop = "name"
   width="180">
   <template scope="scope">
    <div style="color:red;text-decoration:underline;cursor:pointer;" @click="getMore2(scope.row)">{{ scope.row.date }}</div>
   </template>
  </el-table-column>
</el-table>
 
<el-dialog :visible-sync="getA">
  <my-component :rowaa=row></my-component>
</el-dialog>
<el-dialog :visible-sync="getB">
  <my-component2 :rowaa=row></my-component2>
</el-dialog>
 
<script>
  import myComponent from './mycomponent'
  import myComponent2 form './mycomponent2'
  export default {
    data() {
       return {
        tableData : [
          {"number" : 1,"name":"y"},
          {"number" : 2,"name":"x"},
        ],
        getA : false,
        getB : false,
        row : ''
      } 
    },
    components: {
     'my-component' : myComponent,
      'my-component2' : myComponent2 
    },
    methods : {
      getMore(row) {
        this.getA = true
        this.row = row
      },
      getMore2(row) {
        this.getB = true
        this.row = row
      }
    }
  }
</script>

子组件 mycomponent

<div>{{formData}}</div>
 
<script>
export default {
  props: ['rowaa'],
  data() {
    return {
      formData:''
    }
  },
  created() {
   this.getData() 
  },
  watch : {
    'rowaa' : 'getData'
  },
  methods: {
    getData() {
      //从后台获取数据逻辑 model.CacheModel.get('api/' + this.rowaa + '.json')
      //通过this.rowaa就可以获取传过来的值
      this.formData = 333
    }
  }
}
</script>

问题解决

可以使用template+slot插值进行管理

点击找到当前行的信息,然后再根据该信息在子组件中请求数据

也试过通过点击行的事件,判断在哪一个单元格然后处理事件,这样也可以,但如果在表格中列存放的内容发生变化又得重新调整

也试过dialog弹出框直接写在当前单元格的template中,就像官网中例子一样,但是这样会在点击时触发多次(次数与当前页展示的数量一致)

补充知识:element cell-click使用方法

我就废话不多说了,大家还是直接看代码吧~

<el-table width="100%" border :data="Datalist" @cell-click="handle" >

methods: {
	handle(row,column,event,cell) {
	  console.log(row)
	  console.log(column)
	  console.log(event)
	  console.log(cell)
  }
}

以上这篇vue+elementui实现点击table中的单元格触发事件--弹框就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
js获取客户端网卡的IP地址、MAC地址
Mar 26 Javascript
JS+CSS实现表格高亮的方法
Aug 05 Javascript
Javascript复制实例详解
Jan 28 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
jQuery电话号码验证实例
Jan 05 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
Oct 08 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
javscript 数组扁平化的实现
Feb 03 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 #Javascript
vue element table中自定义一些input的验证操作
Jul 18 #Javascript
vue cli4.0项目引入typescript的方法
Jul 17 #Javascript
js实现省级联动(数据结构优化)
Jul 17 #Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 #Javascript
jquery实现有过渡效果的tab切换
Jul 17 #jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 #Javascript
You might like
php生成EXCEL的东东
2006/10/09 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
小谈php正则提取图片地址
2014/03/27 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
javascript 对象的定义方法
2007/01/10 Javascript
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jquery常用操作小结
2014/07/21 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
移动前端图片压缩上传的实例
2017/12/06 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
JS实现简单日历特效
2020/01/03 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python Deque 模块使用详解
2014/07/04 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python socket 聊天室实例代码详解
2019/11/14 Python
python Xpath语法的使用
2020/11/26 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
感恩母亲节活动方案
2014/03/04 职场文书
安踏广告词改编版
2014/03/21 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
文艺演出主持词
2015/07/01 职场文书
PHP基本语法
2021/03/31 PHP
Python利用folium实现地图可视化
2021/05/23 Python