项目中遇到一个需求,要求点击每一行的“显示更多”,将该行剩余的内容显示完整
我的实现思路:通过操作每一行的scope.row
来控制每行的显示与否
我是这样写的:
<el-table
border
size="mini"
:data="tableData"
tooltip-effect="dark"
class="table"
height="100%"
ref="table"
>
<el-table-column type="index"></el-table-column>
<el-table-column prop="time" width="180" label="时间">
<template slot-scope="scope">
<div style="color:#0080ff">{{scope.row.time}}</div>
<el-tooltip class="item" effect="dark" content="根据条件查询" placement="right">
<span>上下文查询</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="content" label="内容">
<template slot-scope="scope">
<div class="content" :class="{showMore:scope.row.show}">{{scope.row.content}}</div>
<span @click="showMore(scope.row)" v-show="!scope.row.show" style="color:#0080ff;">显示更多...</span>
</template>
</el-table-column>
</el-table>
关键在于第三个el-table-column里的showMore方法,该方法实现如下
showMore (row) {
row.show = true
}
然而并没有生效,检查数据,修改已经生效,但并没有同步到视图上,想请教一下,我的写法哪里有问题?这种需求应该如何实现?
show应该不是你数据中自带的吧,或者说他原本是不存在的,你通过showMore设置后才存在。这样的数据需要用set设置才会更新视图