接着上一篇讲的,封装element ui table, 支持自定义列的展示和按照指定顺序展示
自定义列需要在引用页面重新写一下,这样就可以定义化了,多数用于一些转换,或者操作列场景下,自行考虑即可,我们粉转成一个组件,那么不用每个table页面按照官方的这种el-table-column写法:
<el-table-column label="状态" >
<template slot-scope="{row}">
<span class="link-type">{{ row.status }}</span>
</template>
</el-table-column>
而是使用
columns: [ { prop: 'id', label: '序号', align: 'center', width: '60px' }, { prop: 'user_id', label: '用户id', align: 'center', width: '120px' },
。。。。。。。。。省略
那么如果我在某些情况下对columns的某列需要用多个事件处理,那么改怎么办呢?
下面先看看效果:
每个按钮都有自己的事件,并且按钮是动态的,下面看看代码:
columns: [
。。。。。。。省略
{
prop: 'atrome',
label: '操作',
align: 'center',
width: '250px',
render: (h, params) => {
const butts = this.showButton(params.row.shop_type)
const button = []
butts.forEach((item, index) => {
let opt = ''
opt = h('Button', {
props: {
type: 'primary',
size: 'small'
},
style: {
marginLeft: '5px'
},
on: {
click: () => {
this.openType(item.key)
}
}
}, item.val)
button.push(opt)
})
return h('div', button)
}
}
。。。。。。。省略
]
//methods里面的showButton,openType方法
showButton: function(type) {
if (type === 26 || type === 27) {
const buts = [
{
'key': 'hw',
'val': '自有仓'
}
]
return buts
} else if (type === 28 || type === 29 || type === 30) {
const buts = [
{
'key': 'ls',
'val': 'PDD'
},
{
'key': 'cp',
'val': 'JD'
},
{
'key': 'lj',
'val': 'TIANMAO'
}
]
return buts
}
}
openType: function(type) {
alert(type)
},
这样就实现了render 里面props来自定义 style,动态绑定多个事件,值得注意的是自定义style一定要驼峰命名,否则是不会生效的。
版权声明:本文为lchmyhua88原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。