简单El-Table封装(二)
自定义列内容
Compoents文件夹下加个 VTable.vue 文件,内容如下
<template>
<el-table :data="tableData" style="width: 100%">
<!-- 添加索引 -->
<el-table-column type="index" width="55"></el-table-column>
<!-- 添加一个复选框 -->
<el-table-column checkbox v-if="checkbox" type="selection" width="55"></el-table-column>
<template v-for="item in columns">
<!--v-if 判断类型 -->
<el-table-column v-if="item.type === 'function'" :prop="item.prop" :label="item.label" :key="item.prop" >
<!-- 套一层template,就是为了取这一行的值-->
<template slot-scope="scope">
<!-- 这里可以把数据传给callback函数 -->
<div v-html="item.callback && item.callback(scope.row)" ></div>
</template>
</el-table-column>
<!-- 添加一个type标识用来标注类型的唯一性 -->
<el-table-column v-else-if="item.type==='address'" :prop="item.prop" :label="item.label" :key="item.prop" >
<template slot-scope="scope">
<!-- 渲染有html标签的 -->
<div v-html="scope.row.address"></div>
</template>
</el-table-column>
<el-table-column v-else :prop="item.prop" :label="item.label" :key="item.prop">
</el-table-column>
</template>
</el-table>
</template>
<script>
export default {
name:"VTable",
props:{
//接收列
columns:{
type:Array,
default:()=>[]
},
//接收数据
tableData:{
type:Array,
default:()=>[]
},
checkbox:Boolean
},
data() {
return {
}
}
}
</script>
<style>
</style>
在home.vue页面中使用
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<VTable checkbox :columns="columns" :tableData="tableData"></VTable>
</div>
</template>
<script>
// @ is an alias to /src
import VTable from '@/components/VTable.vue'
export default {
name: 'Home',
data(){
return{
columns:[
{
type:'function', //定义函数类型,用于回调
label:"URL地址",
prop:"date",
callback:(val)=>{
console.table(val);//通过回调把数据出过来,然后处理想要的格式
return `<a href="http://www.baidu.com">${val.name}</a>`
}},
{label:"姓名",prop:"name"},
{label:"地址",prop:"address",type:'address'},
{label:"性别",prop:"gener"}
],
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 <div style="color:red">1518</div> 弄', //这里有html标签
gener:"男"
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄',
gener:"女"
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
}
},
components: {
VTable
}
}
</script>
效果图