给elementUI的table表的某一列添加文字提示(tooltip)

1 篇文章 0 订阅
1 篇文章 0 订阅

要实现的需求是单元格内会有多个DOM,DOM文本依次上下排列,超出单元格宽度用省略号代替,鼠标滑过显示所有文本的内容,如下图所示:

在这里插入图片描述
解决方案如下图所示:

在这里插入图片描述
代码如下:

<el-table-column prop="pointFile" label="点位库" width="140">
                <template slot-scope="scope">
                  <el-tooltip placement="top" effect="dark">
                    <div slot="content" v-for="item in (scope.row.pointFile.split(','))">{{ item }}</div>
                    <ul  class="name-wrapper" style="color:#1989fa;cursor: pointer;
                    white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"
                         @click="enterPoint(scope.row)">
                      <li v-for="item in (scope.row.pointFile.split(','))" style="text-align: left">{{ item }}</li>
                    </ul>
                  </el-tooltip>

                </template>
              </el-table-column>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您可以使用 ElementUI 的作用域插槽(Scoped Slot)来动态渲染头的每一列。具体实现步骤如下: 1. 在 `el-table-column` 标签中使用 `slot-scope` 属性来定义作用域插槽。 2. 在作用域插槽中使用 `header` 插槽来渲染头内容,并通过 `props.column` 访问当前头列的信息。 例如,以下代码可以实现动态添加头列的功能: ``` <template> <el-table :data="tableData"> <el-table-column v-for="(column, index) in dynamicColumns" :key="index" :label="column.label" :prop="column.prop" :width="column.width" :sortable="column.sortable" :index="column.index" :formatter="column.formatter" :show-overflow-tooltip="column.showOverflowTooltip" :align="column.align" :header-align="column.headerAlign" :class-name="column.className" :label-class-name="column.labelClassName" :reserve-selection="column.reserveSelection" :fixed="column.fixed" :resizable="column.resizable" :column-key="column.columnKey" :filters="column.filters" :filter-placement="column.filterPlacement" :filter-multiple="column.filterMultiple" :filter-method="column.filterMethod" :filtered-value="column.filteredValue" :render-header="renderHeader(column)" ></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: 'John', age: 22, address: 'New York' }, { name: 'Jane', age: 23, address: 'London' }, { name: 'Bob', age: 25, address: 'Paris' } ], dynamicColumns: [ { label: 'Name', prop: 'name', width: '100px' }, { label: 'Age', prop: 'age', width: '100px' } ] } }, methods: { renderHeader(column) { if (column.prop === 'address') { return ( <div> { column.label } <el-button size="mini" type="text" icon="el-icon-plus" onClick={() => this.addColumn()}></el-button> </div> ) } else { return column.label } }, addColumn() { this.dynamicColumns.push({ label: 'Address', prop: 'address', width: '100px' }) } } } </script> ``` 在上述代码中,我们首先定义了一个 `dynamicColumns` 数组来存储动态添加头列信息。然后,在 `el-table-column` 标签中使用 `render-header` 属性来渲染头内容,通过 `renderHeader` 方法来判断是否需要添加按钮,并在按钮点击事件中动态添加头列。最后,我们通过 `v-for` 指令来动态渲染格列。 注意:这里使用了 JSX 语法,如果你不熟悉可以先学习一下。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值