背景:

小颖最近在写项目时遇到了要给  element-ui 中的  el-table v-for  el-table-column 标签时给某列加内容和点击事件,项目忙完了想着总结一下,下面一起来看下具体怎么实现吧

页面效果:

公共数据:

  data() {
return {
tableData: [{
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-08',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-06',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
sex: '男'
}, {
date: '2016-05-07',
name: '李晓梅',
address: '上海市普陀区金沙江路 158号',
sex: '女'
}],
}
},

公共点击事件:

  methods: {
toDetail(row, column, event) {
console.log('点击地址啦');
}
}

公共CSS:

<style lang="scss">
.blue-font-color {
color: #409eff;
border-bottom: 1px solid #409eff;
cursor: default;
}
</style>

方法一:

使用 slot-scope + v-if + v-else

HTML:

    <el-table :data="tableData" height="250" border style="width: 100%">
<el-table-column :prop="dt.prop" :label="dt.labelName" v-for="(dt,index) in colData"
:key="index">
<template slot-scope="scope">
<span v-if="dt.prop=='address'" class="blue-font-color" @click="toDetail(scope.row)">
{{ scope.row.address }}</span>
<span v-else>{{ scope.row[dt.prop] }}</span>
</template>
</el-table-column>
</el-table>

Javascript:

      colData: [
        { prop: 'date', labelName: '日期' },
        { prop: 'name', labelName: '姓名' },
        { prop: 'address', labelName: '地址' },
        { prop: 'sex', labelName: '性别' },
      ],

方法二:

使用 表格自带的  formatter + row-click事件

HTML:

    <el-table :data="tableData" height="250" border style="width: 100%" @row-click="toDetail">
<el-table-column :prop="dt.prop" :label="dt.labelName" v-for="(dt,index) in colData"
:key="index" :formatter="dt.formatter">
</el-table-column>
</el-table>

Javascript:

data差异:

      colData: [
{ prop: 'date', labelName: '日期' },
{ prop: 'name', labelName: '姓名' },
{
prop: 'address', labelName: '地址',
formatter: (row, column, cellValue, index) => {
return <span class='blue-font-color'>{cellValue}</span>
}
},
{ prop: 'sex', labelName: '性别' },
],

点击事件差异:

    toDetail(row, column, event) {
if (column.property == "address") {
console.log('点击地址啦');
}
}
}

方法三:

使用 表格自带的  formatter 

HTML:

    <el-table :data="tableData" height="250" border style="width: 100%">
<el-table-column :prop="dt.prop" :label="dt.labelName" v-for="(dt,index) in colData"
:key="index" :formatter="dt.formatter">
</el-table-column>
</el-table>

 Javascript:

data差异:(tableData 还要的哦,只是这里没写)

  data() {
const that = this
return {
colData: [
{ prop: 'date', labelName: '日期' },
{ prop: 'name', labelName: '姓名' },
{
prop: 'address', labelName: '地址',
formatter: (row, column, cellValue, index) => {
return <span class='blue-font-color' onclick={that.toDetail.bind(null, row)}>{cellValue}</span>
}
},
{ prop: 'sex', labelName: '性别' },
]
}
},

点击事件就和上面 公共的点击事件方法 一样。

如何给el-table中某一列加指定内容和点击事件的更多相关文章

  1. JavaScript实现获取table中某一列的值

    JavaScript实现获取table中某一列的值 1.实现源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  2. JavaScript获取table中某一列的值的方法

    1.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  3. 合并table中某一列相邻的相同的行

    合并table中某一列相邻的相同的行​1. [代码]合并table中某一列相邻的相同的行  <!DOCTYPE html><html>    <head>      ...

  4. excel 如何为列添加指定内容(字符串)

      excel 如何为列添加指定内容(字符串) CreateTime--2018年5月26日17:52:32 Author:Marydon 1.情景展示 D列的值需要获取B列的值并且在后面统一加上12 ...

  5. 解决ListView中Item的子控件与Item点击事件冲突

    常常会碰到在ListView中点击当中一个Item.会一并触发其子控件的点击事件.比如Item中的Button.ImageButton等.导致了点击Item中Button以外区域也会触发Button点 ...

  6. ListView中嵌入布局的Button或多个点击事件

    有时候在ListView嵌入的布局中有多个事件需要点击,比如一个item中有TextView和Button两个布局,当我们需要获取这两个点击事件时,我们应该如何去获取呢,通常来说,我们都是已经固定好了 ...

  7. 关于页面中table中相同的列自动合并

    代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  8. 给table中某一列的文字右对齐

    一般来说,没写过jquery的前端人员,肯定是定义一个class,给每一行的那列加上align_r{text-align:right}.这是很麻烦的. 所以用jquery来写,可以$("ta ...

  9. HTML锁定Table中某一列

    1. 2. 3. function ChangeTable() { var type = document.getElementById("ddl_ReportType").val ...

  10. OAF TABLE中添加序号列

    在实际的OAF页面TABLE的使用中,会有很多时候需要在前台页面中显示序号,虽然在sql中可以使用rownum来获得序号,但是rounum的优先级比order by 高,所以在语句中order by ...

随机推荐

  1. docker 安装 Influxdb-relay 使用

    转载请注明出处: 1.influxdb relay的作用和特性 数据转发:InfluxDB Relay 可以从一个或多个源(input)接收数据,并将其转发到一个或多个目标(output)的 Infl ...

  2. 搭建rsyncd服务

    前言 rsync常用来做文件传输和同步.本文示例中客户端通过rsync同步服务端的/home/tmp目录到本地(不是将客户端的文件同步到服务端). 环境信息 IP 系统版本 rsync版本 说明 19 ...

  3. Ubuntu虚拟机安装以及在Ubuntu上安装pycharm

    一.在VMware上安装Ubuntu操作系统 1.下载Ubuntu镜像文件 下载地址:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 参考文章:Ubuntu系统下载 ...

  4. Go Web项目结构 + 基础代码

    Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. 因为我是从Java转过来的,其实这种包的结构与Java的类似 ...

  5. 干货分享:用ChatGPT调教批量出Midjourney咒语,出图效率Nice ,附资料。

    Prompts就是AI绘图的核心竞争力. 您是不是觉得用Midjourney生成的图不够完美? 又让ChatGPT去生成Prompt,然后效果还不理想? 其实ChatGPT你给他投喂资料后,经过调教的 ...

  6. 一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 问题现象 7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值8 ...

  7. TIDB - 分布式数据库

    TIDB(一) 重点 TIDB核心 数据存储-RocksDB Raft 协议 选举 数据同步 MVCC 表数据与kv映射关系 索引数据与kv 映射关系 元数据和sql 层计算 PD调度 HTAP 特性 ...

  8. QA|如何实现一个函数读取1-9按钮?|网页计算器自动化测试实战

    如何实现一个函数读取1-9按钮? 如何实现一个根据我们Json存的数字,自动选取对应按钮点击,并且点击对应算法? 首先我们肯定不能给每个元素都写一个函数吧,毕竟挺多,而且如果这样写了,那加减乘除都要分 ...

  9. 命令行安装ipa包

    我们可以通过ssh连接我们的iphone,来使用命令行安装ipa包 itunnel_mux.exe --lport 9993 --iport 22 itunnel_mux.exe --lport 99 ...

  10. [EasyExcel] 导出合并单元格

    前言 使用spring boot 对excel 进行操作在平时项目中要经常使用.常见通过jxl和poi 的方式进行操作.但他们都存在一个严重的问题就是非常的耗内存.这里介绍一种 Easy Excel ...