这次要实现的是点击哪行展开哪行,其他行关闭(即 每次只展示一行)
效果图 ↓
<el-table
:data="tableData"
:expand-row-keys="expands"
:row-key="getRowKeys"
@expand-change="expandSelect"
@row-click="clickRow"
ref="expandTable"
style="width: 100%">
<el-table-column type="expand">
<template slot-scope="props">
<!-- 这放啥都行 不重要 -->
<el-form>
<el-form-item label="商品名称">
<span>{{ props.row.name }}</span>
</el-form-item>
</el-form>
<!-- 这放啥都行 不重要 -->
</template>
</el-table-column>
<el-table-column label="商品 ID" align="center" prop="id"></el-table-column>
<el-table-column label="商品名称" align="center" prop="name"></el-table-column>
<el-table-column label="描述" align="center" prop="desc"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button @click.stop="clickBtn">查看</el-button>
</template>
</el-table-column>
</el-table>
export default {
data () {
return {
tableData: [{
id: '12987122',
name: '好滋好味鸡蛋仔',
desc: '荷兰优质淡奶,奶香浓而不腻',
shop: '王小虎夫妻店',
}, {
id: '12987123',
name: '好滋好味鸡蛋仔',
desc: '荷兰优质淡奶,奶香浓而不腻',
shop: '王小虎夫妻店',
}, {
id: '12987125',
name: '好滋好味鸡蛋仔',
desc: '荷兰优质淡奶,奶香浓而不腻',
shop: '王小虎夫妻店',
}],
// 要展开的行,数值的元素是row的key值
expands: [],
// 获取行数据的key
getRowKeys (row) {
return row.id
},
}
},
methods: {
// 每次只展示一行
expandSelect (row, expandedRows) {
// 当没有展开行时
if (expandedRows.length > 0) {
// 先清空展开行数组
this.expands = []
// 把当前行的id放到展开行数组中(data中getRowKeys获取的是什么这里就push什么)
this.expands.push(row.id)
} else {
// 清空存放目前展开行的数组
this.expands = []
}
},
// 单击某行任意位置展开/收起行
clickRow (row) {
this.$refs.expandTable.toggleRowExpansion(row)
// 如果仅为点击展开 传第二个参数为true
// this.$refs.expandTable.toggleRowExpansion(row, true)
},
clickBtn () {
console.log('阻止单击事件继续传播')
}
}
}
:expand-row-keys="expands"
expand-row-keys
可以通过该属性设置 Table 目前的展开行expands
,需要设置 row-key 属性才能使用
row-key
行数据的 Key,用来优化 Table 的渲染
expand-change
当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows
;树形表格时第二参数为 expanded
)
row-click
当某一行被点击时会触发该事件
toggleRowExpansion
用于可展开表格与树形表格,切换某一行的展开状态,如果使用了第二个参数,则是设置这一行展开与否(expanded 为 true 则展开)
当表格中出现按钮的点击事件时
@click.stop="clickBtn"
可以阻止单击事件继续传播(避免点击行时影响按钮点击事件)
仅作为记录
不喜勿喷!!!
不喜勿喷!!!
不喜勿喷!!!