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 弹出层组件(升级版)
May 12 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
Apr 24 Javascript
jQuery 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
Jun 03 Javascript
Jquery调用iframe父页面中的元素及方法
Aug 23 Javascript
js获取json中key所对应的value值的简单方法
Jun 17 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
vue实现整屏滚动切换
Jun 29 Javascript
vue中可编辑树状表格的实现代码
Oct 31 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性能优化 产生高度优化代码
2011/07/22 PHP
php强制下载文件函数
2016/08/24 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
js 异步处理进度条
2010/04/01 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
图解js图片轮播效果
2015/12/20 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
python和go语言的区别是什么
2020/07/20 Python
python实现单机五子棋
2020/08/28 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
合作意向协议书范本
2014/03/31 职场文书
购房意向书范本
2014/04/01 职场文书
外联部演讲稿
2014/05/24 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
离婚财产处理协议书
2014/09/30 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android