場(chǎng)景:最近在做一個(gè)需求,導(dǎo)出時(shí)選擇導(dǎo)出模版,要求是只能單選,如下圖:

image.png
解決方案:結(jié)合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> // 添加一個(gè)多選框,控制選中與否
</template>
</el-table-column>
<el-table-column
prop="name"
label="模版名稱">
</el-table-column>
<el-table-column
label="操作">
<template slot-scope="scope">預(yù)覽模版</template>
</el-table-column>
</el-table>
</div>
</template>
js代碼:
export default {
data () {
return {
tableData: [],
currentSelectItem: {} // 當(dāng)前選中的值
}
},
created () {
this.setTable()
},
methods: {
setTable () {
let resdata = [{
id: 1,
name: 'xxx'
}, {
id: 2,
name: 'xxx',
}]
// 后臺(tái)數(shù)據(jù)返回后,手動(dòng)添加一個(gè)checked屬性控制選中與否
resdata.forEach(item => {
item.checked = false
})
this.tableData = resdata
},
checkboxChange(row) {
this.dataTable.data.forEach((item) => {
// 排他,每次選擇時(shí)把其他選項(xiàng)都清除
if (item.id !== row.id) {
item.checked = false
}
})
console.log(row) // 這里可以把當(dāng)前選中的這一項(xiàng)先保存起來(lái)
this.currentSelectItem = row.checked ? row : ''
},
}
}
最后獲取的currentSelectItem值,就是選中的值。