Element table 实现点击任何一处展开行功能

当行内容过多并且不想显示横向滚动条时,可以使用 Table 展开行功能。

通过设置 type=”expand” 和 Scoped slot 可以开启展开行功能,el-table-column 的模板会被渲染成为展开行的内容,展开行可访问的属性与使用自定义列模板时的 Scoped slot 相同。

正常默认是点击行前面的向右箭头展开行,但是从用户体验上好像不是很人性化,产品经理需要点击整行的任何一处,即可展开。

实现也不是不可能,table组件提供很过的API和属性,通过组合即可实现。先设置行的 row-key 属性,然后利用 expand-row-keys 属性来控制当前展开的行,它是一个数组,可控制多行展开。最后通过 row-click 事件API来触发更新 expand-row-keys 数组。

代码实现就是

<el-table
    :row-key="(row) => { return row.id }"
    :expand-row-keys="expands"
    @row-click="clickRowHandle">
</el-table>

data() {
    return {   
      expands: [],
  },

methods: {
    clickRowHandle(row, column, event) {
        if (this.expands.includes(row.id)) {
             this.expands = this.expands.filter(val => val !== row.id);
        } else {
             this.expands.push(row.id);
        }
    }
}

好了,既然没有直接的API实现,转换思维也是可以做到的。

评论

还没有评论...留下你的评论!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Sidebar