我是靠谱客的博主 专注大船,最近开发中收集的这篇文章主要介绍vue中用table_element-ui中的 table 组件在vue中的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

经常使用 element-ui 的小伙伴应该对 el-table 组件非常熟悉,通常它长下面这个样子:

但是我们可以使用使用 v-for 来优化模版中的 el-table-column

v-for="{ prop, label } in colConfigs"

:key="prop"

:prop="prop"

:label="label">

export default {

data () {

this.colConfigs = [

{ prop: 'date', label: '日期' },

{ prop: 'name', label: '姓名' },

{ prop: 'address', label: '地址' }

]

return {

tableData: [{

date: '2016-05-02',

name: '王小虎',

address: '上海市普陀区金沙江路 1518 弄'

}, {

date: '2016-05-04',

name: '王小虎',

address: '上海市普陀区金沙江路 1517 弄'

}]

}

}

}

这样做的好处在于,如果想再增加一列,完全可以不用动 template,只需要简单的在 this.colConfigs 这个数组中增加一个配置项 { prop: 'xxx', label: 'xxx' } 即可

如果我们即想要简单的属性可以直接加个配置项渲染出来,又希望复杂的渲染能在模版中写出来,要怎么实现呢?---巧用 slot,为 el-table 封装一层

我们先来看一下封装的组件 my-table:

// my-table.vue

export default {

props: ['colConfigs', 'data']

}

这个封装实际上就是把前面的 colConfigs 作为一个 prop 传入,但是跟上面例子有一点不同的是,配置项中多了一个 slot 属性,通过这个属性,我们就可以像文章最开始那样在模版中写了,用法如下:

:data="tableData"

:col-configs="colConfigs">

查看

export default {

data () {

this.colConfigs = [

{ prop: 'date', label: '日期' },

{ prop: 'name', label: '姓名' },

{ prop: 'address', label: '地址' },

// 模版中的元素需要对应的有 slot="opt" 属性

{ slot: 'opt' }

]

return {

tableData: [{

date: '2016-05-02',

name: '王小虎',

address: '上海市普陀区金沙江路 1518 弄'

}, {

date: '2016-05-04',

name: '王小虎',

address: '上海市普陀区金沙江路 1517 弄'

}]

}

}

}

现在我们想要增加一个列,只要加个配置项,或者加个 slot ,完美~

等等,假设我的 table 中有几列渲染比较复杂,那几列又都比较相似,像下面这种:

:data="tableData"

:col-configs="colConfigs">

{{ row['change'] > 0 ? '+' + row['change']: row['change'] }}

{{ row['trend'] > 0 ? '+' + row['trend']: row['trend'] }}

这又重复写模版了…

使用 :is=”component”

我们可以为配置项再增加一个属性 component, 用户可以指定 component 属性来特殊处理某列,实现如下:

// my-table.vue

v-else-if="colConfig.component"

:is="config.component"

:col-config="colConfig">

export default {

props: ['colConfigs', 'data']

}

然后上面的例子就可以改写成:

:data="tableData"

:col-configs="colConfigs">

const PrefixPlusText = {

props: ['colConfig'],

template: `

{{ parseInt(row[colConfig.prop]) > 0 ? '+' + row[colConfig.prop] : row[colConfig.prop] }}

`

}

export default {

data () {

this.colConfigs = [

{ prop: 'change', label: '变化' component: PrefixPlusText },

{ prop: 'name', label: '趋势', component: PrefixPlusText },

]

return {

tableData: [{

change: '12%',

trend: '10%

}, {

change: '-12%',

trend: '-10%'

}]

}

}

}

总结

table 作为数据展示组件,在日常开发中经常被用到,通过这篇文章,可以看到结合 vue 的 slot/component 特性,做一层封装,可以大大简化 table 的使用,大部分时候只需写一个配置属性就可以了。

最后

以上就是专注大船为你收集整理的vue中用table_element-ui中的 table 组件在vue中的使用的全部内容,希望文章能够帮你解决vue中用table_element-ui中的 table 组件在vue中的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部