一、需求示例
通过table-column Attributes里的render-header来实现
二、组件
<el-table border :data="teachers">
<el-table-column :render-header="renderTeacherSel" >
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
{{ scope.row.nickName }}
</template>
</el-table-column>
<el-table-column label="账号" align="center">
<template slot-scope="scope">
{{ scope.row.userId }}
</template>
</el-table-column>
</el-table-column>
<el-table-column width="80" :render-header="renderAddTeacher">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="removeTeacher(scope.$index)">移除</el-button>
</template>
</el-table-column>
</el-table>
三、方法
export default {
data() {
return {
teachers: [
{
nickName: 'Allen',
userId: 'allen789@163.com'
},
{
nickName: 'Nick',
userId: 'nick789@163.com'
}
],
editTeacherSel:''
}
},
methods: {
renderTeacherSel (h) {
let filters = [
{text:"张三",value:"zhangsan@163.com"},
{text:"Alice",value:"Alice@163.com"},
{text:"Jack",value:"Jack@163.com"}
]
return (
h('el-select',{
style: {
width: '100%'
},
on: {
input: (value) => {
this.editTeacherSel = value
}
},
props: {
value: this.editTeacherSel,
clearable: true
}
},[
filters.map(item => {
return h("el-option", {
props: {
value: item.value,
label: item.text
}
})
})
])
)
},
renderAddTeacher (h) {
return (
<el-button
type="primary"
onClick={()=>this.addTeacher()}
>+</el-button>
)
},
addTeacher () {
if(this.editTeacherSel == ''){
this.$message.warning('请选择添加的老师')
return
}
let result = { nickName: '张三', userId: 'zhangsan@163.com' }
this.teachers.push(result)
}
}
}
四、效果