场景:最近在做一个需求,导出时选择导出模版,要求是只能单选,如下图:
![](https://img.haomeiwen.com/i7108890/1ec12826d1dceb48.png)
解决方案:结合element的多选框方法
html代码<template>
<div>
<el-table
:data="tableData">
<el-table-column
label="__">
<template slot-scope="scope">
<el-checkbox @change="checkboxChange(props.obj.row)" v-model="scope.row.checked"></el-checkbox> // 添加一个多选框,控制选中与否
</template>
</el-table-column>
<el-table-column
prop="name"
label="模版名称">
</el-table-column>
<el-table-column
label="操作">
<template slot-scope="scope">预览模版</template>
</el-table-column>
</el-table>
</div>
</template>
js代码:
export default {
data () {
return {
tableData: [],
currentSelectItem: {} // 当前选中的值
}
},
created () {
this.setTable()
},
methods: {
setTable () {
let resdata = [{
id: 1,
name: 'xxx'
}, {
id: 2,
name: 'xxx',
}]
// 后台数据返回后,手动添加一个checked属性控制选中与否
resdata.forEach(item => {
item.checked = false
})
this.tableData = resdata
},
checkboxChange(row) {
this.dataTable.data.forEach((item) => {
// 排他,每次选择时把其他选项都清除
if (item.id !== row.id) {
item.checked = false
}
})
console.log(row) // 这里可以把当前选中的这一项先保存起来
this.currentSelectItem = row.checked ? row : ''
},
}
}
最后获取的currentSelectItem值,就是选中的值。
网友评论