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值就可觸發重新渲染


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM