element-ui el-table js控制表格行展开和折叠
微wx笑 2021-01-12【前端开发】 9 0关键字: element-ui el-table js 表格 展开 折叠
通常我们是在一个空节点上添加子节点的时候,需要默认展开这个节点,也就是在子节点添加成功之后调用,但是这里面有一个值得注意的地方,否则不会生效!
element-ui el-table js控制表格行展开和折叠
相关html
<el-table :data="list" style="width: 100%;margin-top:30px;" :expand-row-keys="expandKeys" :default-sort="{prop: 'orderNo', order: 'ascending'}" :row-style="rowStyle" row-key="id" lazy border :load="loadChild" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column align="center" label="ID" width="80"> <template slot-scope="scope"> {{ scope.row.id }} <!-- <template v-if="scope.row.parentId === 0"> <el-button icon="el-icon-caret-right" size="mini" circle @click="handleExpend(scope.row, $event)" /> </template> <template v-else> <el-button icon="el-icon-caret-bottom" size="mini" circle @click="handleExpend(scope.row, $event)" /> </template> --> </template> </el-table-column> <el-table-column align="center" label="栏目编码" width="150"> <template slot-scope="scope"> {{ scope.row.code }} </template> </el-table-column> <el-table-column align="center" label="栏目名称" width="200"> <template slot-scope="scope"> {{ scope.row.name }} </template> </el-table-column>
这里使用 :expand-row-keys="expandKeys" 记录展开的行的key到 expandKeys 数组中
相关js
export default { // components: { Pagination }, data() { return { cate: Object.assign({}, defaultCate), routes: [], dialogVisible: false, dialogType: 'new', checkStrictly: false, defaultProps: { children: 'children', label: 'title' }, tableKey: 0, list: [], expandKeys: [], total: 0, listLoading: true, listQuery: { page: 1, size: 10, limit: 10 }, importanceOptions: [1, 2, 3], sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }], statusOptions: ['published', 'draft', 'deleted'], showReviewer: false } },
默认初始为空,没有展开的行 expandKeys: [],
你可以在 created 中指定展开的行
created() { // Mock: get all routes and cates list from server // this.getRoutes() this.getList() this.expandKeys.push(this.cate.parentId + '') },
通常我们是在一个空节点上添加子节点的时候,需要默认展开这个节点,也就是在子节点添加成功之后调用。
相关js
const { data } = await addCate(this.cate) // // console.log(data) this.cate = data if (this.cate.parentId && this.cate.parentId > 0) { for (let index = 0; index < this.list.length; index++) { if (this.list[index].id === this.cate.parentId) { if (!this.list[index].children) { this.list[index].children = [] } this.list[index].hasChildren = true this.list[index].children.push(this.cate) // this.expandKeys = [] this.expandKeys.push(this.cate.parentId + '') console.log(this.expandKeys) break } } } else { this.cate.id = data.id this.list.push(this.cate) this.total += 1 }
在一个空节点上添加子节点的时候,添加成功之后,首先是修改 hasChildren = true ,然后是添加子节点 children.push(this.cate),最后设置展开的行 this.expandKeys.push(this.cate.parentId + '')
注意
我这里使用了 this.cate.parentId + ''
值得注意的是我们指定的 row-key="id" ,id 是数字类型的,但做为 row-key 的时候它被默认转换成了字符串类型,所以如果你 this.expandKeys.push(this.cate.parentId),那是不会生效的。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2021-01-12/601.html