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

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中的单元格触发事件--弹框就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue项目中仿element-ui弹框效果的实例代码

    最近要写个弹框,发现element-ui弹框样式还可以,就copy下来改吧改吧.也不分步骤详细介绍了直接上代码. 在组件目录中新建文件夹message 我把message目录里的东西给大家贴出来 message文件夹 src文件夹 index.js import Message from './src/main.js'; export default Message; mian.js import Vue from 'vue'; import Main from './main.vue'; le

  • Element-UI中关于table表格的那些骚操作(小结)

    最近的项目中使用到element-ui组件库,由于做的是后台管理系统,所以经常需要操作表格,编辑样式的过程中遇到一些问题,官网针对table给出了很多的api,自己可以自定义,基本能满足产品需求,但是没有给出具体的案例,网上的资料也比较简略,这里简单整理下一些常用的操作,如果有类似的功能可以做一个参考. 具体的使用方法还是建议仔细阅读官网-table章节: https://element.eleme.cn/#/zh-CN/component/table#table-column-scoped-s

  • elementUI中Table表格问题的解决方法

    前言 element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染. 在开发vue框架项目时,引入element插件,使用table表格组件时,遇到了一些问题,以下列出以供参考. 1.表格样式问题: 混乱样式.png 正常样式.png 如上图,在当前导航表格table样式是没问题的,但当我点击别的导航去到另外的页面,然后再回到之前的导航页面,表格table的样式就会混乱,随便点击当前页面或刷新亦或拉伸页面,样式又恢复正常,很奇怪的样式问题.

  • 使用element-ui +Vue 解决 table 里包含表单验证的问题

    应用场景: 在实际使用中经常会遇到需要在Form表单中使用table表格进行表单提交,同时又需要对table的字段进行校验,效果如图所示: 这个校验中,最关键的问题在于如何给el-form-item 动态绑定prop. :prop="'tableData.' + scope.$index + '.字段名'" 方法一: <template> <div class="app-container"> <el-form :model="

  • element ui table(表格)实现点击一行展开功能

    前言 element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染. element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以点击右箭头可以展开,我们的很多需求是点击某一行展开 那是不是无法实现呢?其实,借助element ui的一些属性,轻松实现点击某行展开,我们还是用2.0.9版本官网的例子, 对齐改造,使之可以做到这点 <template> <el-table :data="tableData5&

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

    elementui中提供了点击行处理事件 查看位置: elementui的table事件 elementui的table中怎样点击某个单元格触发事件? 可以先看一下官网中table的自定义列模板代码 <template> <el-table :data="tableData" border style="width: 100%"> <el-table-column label="日期" width="180

  • vue+elementUI实现内嵌table的方法示例

    在大四实习工作中碰到一个比较特别的需求,要求在一个 table 表格中点击一条数据的编号,在该条数据下方出现一个新的 table 表格.这个需求在 element UI 的官方文档中也有案例,以下是参考了其他博客(找不到博客地址了)和 element UI 之后的最终实现效果. 效果图 不知道是公司电脑比较拉,还是软件问题导致录制出来的动态图很卡,但是在实际操作并不会卡. 代码: 页面显示代码: 主要代码在于 <el-table-column type="expand" widt

  • vue+elementUI实现点击按钮互斥效果

    本文实例为大家分享了vue+elementUI实现点击按钮互斥的具体代码,供大家参考,具体内容如下 先看看实现的效果吧! 步骤: 一.html代码 <!-- 等级筛选 -->     <div class="level-screening">       <el-button         size="medium"         type="primary"         :class="index

  • vue+elementUi实现点击地图自动填充经纬度以及地点

    本文实例为大家分享了vue+elementUi实现点击地图自动填充经纬度以及地点的具体代码,供大家参考,具体内容如下 实现代码 1.安装组件终端运行: npm install vue-baidu-map --save 2.HTML代码块 <el-form-item label="经度" :label-width="formLabelWidth" prop="longitude">     <el-input  class=&qu

  • antd vue table跨行合并单元格,并且自定义内容实例

    ant-design-vue版本:~1.3.8 需求:表格实现跨行合并,并且在合并完的单元格中显示图片 效果图: 源码: export default { data() { return { pic95: require('@/assets/produit/95.png'), pic99: require('@/assets/produit/99.png'), varTable: { cloumns: [ { title: '置信度', dataIndex: 'confidence ', cla

  • vue.js中toast用法及使用toast弹框的实例代码

    1.首先引入 import { Toast } from 'vant' 写个小列子 绑定一个click事件 2.写事件 在methods写方法 showToast() { this.$toast({ message: "今日签到+3", }) }, 3.效果图如下 一个简单的toast提示成就好了 下面通过实例代码看下vue 中使用 Toast弹框 import { ToastPlugin,ConfirmPlugin,AlertPlugin} from 'vux' Vue.use(To

  • 在Layui中操作数据表格,给指定单元格添加事件示例

    最近入坑Layui这个为服务端程序员量身定做的前端框架. 为什么不用vue结合各种流行前端框架Element.iView啊什么,后台大哥们不会啊!!! 只好我来迁就他们呢,还得一点一点儿的学起来. 当我们在操作数据表格的时候,并不是一定要点击表格工具栏中的"查看"按钮,来进行查看,而是点击某一特定的列来进行某些数据查看.例如下图这样. 这就涉及到表格的自定义事件.代码如下: <table id='task-list' lay-filter='task-list'></

  • PyQt5中向单元格添加控件的方法示例

    1.简介 pyqt 列表 单元格中 不仅可以添加数据,还可以添加控件. 我们尝试添加下拉列表.一个按钮试试. setItem:将文本放到单元格中 setCellWidget:将控件放到单元格中 setStyleSheet:设置控件的样式(Qt StyleSheet) 2.功能实现 # -*- coding: utf-8 -*- ''' [简介] PyQT5中 单元格里面放控件 ''' import sys from PyQt5.QtWidgets import (QWidget, QTableW

  • C#实现拆分合并Word表格中的单元格

    目录 程序环境 在Word表格中合并单元格 完整代码 效果图 在Word表格中拆分单元格 完整代码 效果图 我们在使用Word制作表格时,由于表格较为复杂,只是简单的插入行.列并不能满足我们的需要.要做一个完整的表格,很多时候需要将单元格进行拆分或者合并,才能达到我们想要的效果.那么具体要如何操作呢?别担心,本文将详细为您介绍在Word表格中拆分或合并单元格的思路及方法. 在Word表格中合并单元格 在Word表格中拆分单元格 程序环境 本次测试时,在程序中引入Free Spire.Doc fo

  • JS使用for循环遍历Table的所有单元格内容

    JS遍历Table的所有单元格内容思路是遍历Table的所有Row,遍历Row中的每一列,获取Table中单元格的内容 function GetInfoFromTable(tableid) { var tableInfo = ""; var tableObj = document.getElementById(tableid); for (var i = 0; i < tableObj.rows.length; i++) { //遍历Table的所有Row for (var j

随机推荐