Vue中强制表格数据重新渲染

Vue中强制表格数据重新渲染

<el-table
:data="tableData.slice((this.pagenum-1)*this.pagesize,this.pagenum*this.pagesize)"
style="width: 100%"
border
:key="keyvalue">
  <el-table-column label="Confirm" width="180" align="center">
     <template slot-scope="scope">
       <el-checkbox checked v-if="scope.row.Confirm_flag=='Y'" @change="UpdateConfirmeState($event,scope.row.Id)"></el-checkbox>
         <el-checkbox v-else @change="UpdateConfirmeState($event,scope.row.Id)"></el-checkbox>
     </template>
  </el-table-column>
 </el-table>
<el-pagination
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange"
  :current-page="pagenum"
  :page-sizes="[5, 10]"
  :page-size="pagesize"
  layout="total, sizes, prev, pager, next, jumper"
  :total="total">
</el-pagination>

通过v-if来判断checkbox是否被选中:
v-if的生命周期:
v-if
初始渲染
初始值为 false 组件不会渲染,生命周期钩子不会执行,v-if 的渲染是惰性的。
初始值为 true 时,组件会进行渲染,并依次执行 beforeCreate,created,beforeMount,mounted 钩子。

切换
false => true
依次执行 beforeCreate,created,beforeMount,mounted 钩子。
true => false
依次执行 beforeDestroy,destroyed 钩子。


所以pagination进行到下一页的时候,checkbox状态不会更换,还是第一页的状态,所以需要通过vue key 实现重新渲染(还可以通过watch改变v-if条件的状态来强制重新渲染)

在table上加个key值,当点击@size-change或者@current-change的事件时改变key值就可触发重新渲染

posted @ 2020-08-07 16:45  CodeMuscle  阅读(11151)  评论(0编辑  收藏  举报