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 相关文章推荐
javascript 打开页面window.location和window.open的区别
Mar 17 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
使用js+jquery实现无限极联动
May 23 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
js实现仿qq消息的弹出窗效果
Jan 06 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
May 31 Javascript
面试常见的js算法题
Mar 23 Javascript
微信小程序 数据绑定及运算的简单实例
Sep 20 Javascript
vue实现菜单切换功能
May 08 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 Javascript
Moment的feature导致线上bug解决分析
Sep 23 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反转字符串函数strrev()函数的用法
2012/02/04 PHP
php目录操作实例代码
2014/02/21 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
利用Python命令行传递实例化对象的方法
2016/11/02 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
分分钟入门python语言
2018/03/20 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python使用folium excel绘制point
2019/01/03 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
数控技术学生的自我评价
2014/02/15 职场文书
后备干部培训方案
2014/05/22 职场文书
离婚起诉状范本
2015/05/19 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技