Table

固定表头

只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码。
例如:

<el-table
:data="tableData3"
height="250"
border
style="width: 100%">
...
</el-table>

这里文档只给了一种固定高度250px的解决方案,实际应用大多数是需要自适应占满父元素,超出滚动固定表头的。
值得一提的是,height可以动态绑定,我的解决方案是给表格包一个父元素,并绑定一个值100%height

height:Table 的高度,默认为自动高度。如果 heightnumber 类型,单位 px;如果 heightstring 类型,则这个高度会设置为 Tablestyle.height 的值,Table 的高度会受控于外部样式。

点击事件

点击事件刚开始在这里陷入深坑了,拿行的点击事件来讲:
row-dblclick: 表格的某一行双击事件。首先是dblclick而不是dbclick!(不知为什么我vscode提示row-dbclick,醉了),其次调用加@,然后默认参数通常用到最多的是row,不用在括号里写明,在方法里直接声明就可以用了;row-click同理。
例如:

<el-table ref="tabFavourite"
style="width: 100%" :height="tabHeight"
border
@row-dblclick="goTimeseries"
@row-click="toggle">
</el-table>
...
<script>
export default {
...
methods: {
toggle ({ fromName, symbol }) {
this.fromName = fromName;
this.symbol = symbol;
this.$refs.tabFavourite.setCurrentRow();
// (`fromName`,`symbol`是row的键)
},
goTimeseries (row) {
console.log(...row)
},
}
}
</script>

配合vue过滤器

主要使用自定义列,参数为 { row, column, $index }

<el-table-column
prop="platform.rise"
label="24小时涨幅"
sortable
align="center">
<template slot-scope="scope"><span v-color="scope.row.platform.rise">{{ scope.row.platform.rise | percent(2) | sign(scope.row.platform.change) | nvl('--')}}</span></template>
</el-table-column>
//scope.row是当前列的值,prop其实可以不写

自定义表头

文档解释比较简单:

render-header 列标题 Label 区域渲染使用的 Function Function(h, { column, $index })

实现效果:

鼠标移上去会有提示文字弹出,这里用el-tooltips

  • 无效方案:

       renderHeader (h, { column, $index }) {
    return h('el-tooltip', {
    props: {
    effect: 'light',
    content: '根据交易所24小时成交量占比和实时价格加权计算得到',
    }
    },[
    h('span', column.label),
    h('i', {
    class: 'icon-tips',
    }
    })
    ]);

    渲染结果是一个span包含了label文字,同时有名为el-tooltipclass,并无小图标,后边中括号结构里只能有一个(有待考证)。

  • 可行方案:

       renderHeader (h, { column, $index }) {
    return [
    h('span', column.label),
    h(
    'el-tooltip',
    {
    props: {
    effect: 'light',
    content: (function () {
    let label = column.label;
    switch (label) {
    case '加权最新价':
    return '根据交易所24小时成交量占比和实时价格加权计算得到';
    break;
    case '偏移价':
    return '交易所该币对当前最新价-加权价';
    break;
    }
    })(),
    }
    },
    [
    h('i', {
    class: 'icon-tips'
    })
    ]
    ),
    h('span', {
    class: {
    'el-icon-question': true
    }
    })
    ];
    },

    事实证明返回的这个数组,可以作为表头内真正的标签元素多个累加,最后一个span是我追加的,其实是多余的,参考ElementUI的Table组件中的renderHeader方法研究,作者研究很透彻,最后把span替换成p也能正常渲染,这是我最后一步尝试的,说明数组内的渲染机制,而hcreateElement渲染函数第三个数组参数大于一个的结构均不能被渲染上,而且本标签无论如何都被渲染为span,郁闷。
    先这么使用吧,算是满足需求了

vue关于createElement函数domProps了解下,简单的结构可以用这个实现

  • 可行方案二:使用jsx,直接return (HTML结构)

步步向前之Element-UI的更多相关文章

  1. 使用element ui 日期选择器获取值后的格式问题

    一般情况下,我们需要给后台的时间格式是: "yyyy-MM-dd" 但是使用Element ui日期选择器获取的值是这样的: Fri Sep :: GMT+ (中国标准时间) 在官 ...

  2. element ui 1.4 升级到 2.0.11

    公司的框架 选取的是 花裤衩大神开源的 基于 element ui + Vue 的后台管理项目, 项目源码就不公开了,记录 分享下 步骤 1. 卸载 element ui 1.4的依赖包 2. 卸载完 ...

  3. [坑况]饿了么你是这样的前端——vue+element ui 【this dependency was not found:'element-ui/lib/theme-chalk/index.css'】

    element ui 坑况:今日pull代码,潇洒npm run dev ,被告知:this dependency was not found:'element-ui/lib/theme-chalk/ ...

  4. Vue + Element UI项目初始化

    1.安装相关组件 1.1安装Node 检查本地是否安装node node -v 如果没有安装,从Node官网下载 1.2安装npm npm -v 如果没有安装:使用该指令安装: npm install ...

  5. Element UI——本地引入iconfont不显示

    前言 前面因为本地引入Element UI导致了iconfont不显示,所以只好再去Element UI官网去扒下iconfot 步骤 进入官网 组件 | Element UI F12进入控制台,找到 ...

  6. Html | Vue | Element UI——引入使用

    前言 做个项目,需要一个效果刚好Element UI有,就想配合Vue和Element UI,放在tp5.1下使用,但是引入在线的地址各种报错,本地引入就完美的解决了问题! 代码 __STATIC_J ...

  7. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

  8. 上传图片组件封装 element ui

    // element ui 文档地址: http://element.eleme.io/#/zh-CN <template> <div> <div class=" ...

  9. vue项目使用element ui的Checkbox

    最近使用到element ui的下拉多选框Checkbox Checkbox用法可参考与于 http://element.eleme.io/#/zh-CN/component/checkbox Che ...

  10. vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用

    其实这3个讲的是一个问题,先说下问题,我在watch里设置一个监听,当弹窗打开时,自动添加树形的默认选中项, 但奇怪的是this.$refs为undefined,自然setCheckedKeys无法使 ...

随机推荐

  1. linux tricks 之 ALIGN解析.

    ------------------------------------------- 本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net -- ...

  2. Elasticsearch入门教程(三):Elasticsearch索引&映射

    原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...

  3. npm工作流 与webpack 分同环境配置

    npm:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html process.env.npm_lifecycle_event process. ...

  4. JVM内存分配和垃圾回收以及性能调优

    JVM内存分配策略 一:堆中优先分配Eden 大多数情况下,对象都在新生代的Eden区中分配内存.而新生代会频繁进行垃圾回收. 二:大对象直接进入老年代 需要大量连续空间的对象,如:长字符串.数组等, ...

  5. 2019-11-29-win10-uwp-轻量级-MVVM-框架入门-2.1.5.3199

    title author date CreateTime categories win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 lindexi 2019-11-29 10:16: ...

  6. web部署命令简单记录

    非 root 用户设置环境变量:在< .bash_profile >中设置 后台运行:nohup dosomething >> log.out & nginx 启动ng ...

  7. bat 感想

    用bat做了个跨版本更新包的生成脚本,由于之前都是写一些很简单bat,或者python里使用windows命令,所以纯用bat做这个东西,还是有点复杂的. 过程中遇到很多问题,主要是参数太多,变量的使 ...

  8. 带gcd大数模板

    int ten[4] = {1,10,100,1000}; typedef struct BigNumber { int d[1200]; BigNumber(string s) { int i, j ...

  9. discuz论坛后台部分设置更改之后,清除了缓存网站前台不更新不生效的解决办法

    discuz论坛后台部分设置更改之后,清除了缓存但网站前台不更新不生效的解决办法 在config/config_global.php  把  $_config['memory']['eaccelera ...

  10. react-native启动时红屏报错:Unable to load script.Make sure you're either running a metro server or that ....

    一.报错信息内容 我是在Android Studio中运行启动react-native项目时报的这个错误 1.报错提示:Unable to load script.Make sure you're e ...