在最近的项目开发中,有一个需求需要查询删除数据并在列表中展示,其中的“备注”列需要将删除的时候添加的备注信息进行文字提示,同时备注列中的数据不能超过20个字符。提示文字在鼠标悬浮上进行展示。完成后的效果如下图:
当备注信息文字不超过20字符时,鼠标悬浮不显示提示文字,效果如下:
附上代码一一解析
<el-table
border
header-cell-class-name="header-call-style"
v-loading="loading"
stripe
:data="tableData"
style="width: 100%"
>
<el-table-column
type="index"
label="序号"
width="100"
align="center"
></el-table-column>
<el-table-column
:prop="item.prop"
:label="item.label"
:width="item.width"
v-for="item in tableCols"
:key="item.prop"
:formatter="item.formatter"
align="center"
><template slot-scope="scope">
<el-tooltip
:disabled="
item.label != '备注' ||
String(scope.row[item.prop]).length <= 20
"
effect="dark"
:content="String(scope.row[item.prop])"
placement="bottom"
>
<div v-if="item.label == '备注'">
{{ String(scope.row[item.prop]).substr(0, 20) }}
</div>
<div v-else>
{{ String(scope.row[item.prop]) }}
</div>
</el-tooltip>
</template>
</el-table-column>
</el-table>
el-table-column通过tableCols列表项循环。循环内容对应列表的表头。
template内容通过插槽的方式替换原有内容,只不过是对想要替换的部分替换,不需要替换的部分还是按照之前的内容展示。最后需要注意的是:content = scope.row[item.prop]中的内容是会匹配所有列表的内容,需要将其转化为字符串类型才能展示(如果没有转换也能展示,但是我在开发过程中会有报错所以要进行转换)。
最后,如果这样的方式有问题,欢迎大佬来帮我改正,也欢迎在评论区积极讨论互相学习。