欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue如何基于el-table實(shí)現(xiàn)多頁(yè)多選及翻頁(yè)回顯過(guò)程

 更新時(shí)間:2022年12月12日 15:37:05   作者:努力的小球  
在最近的一個(gè)項(xiàng)目中我需要實(shí)現(xiàn)表格的翻頁(yè),并且還要實(shí)現(xiàn)全選、多選功能,下面這篇文章主要給大家介紹了關(guān)于vue如何基于el-table實(shí)現(xiàn)多頁(yè)多選及翻頁(yè)回顯過(guò)程的相關(guān)資料,需要的朋友可以參考下

近半年時(shí)間在接觸vue寫(xiě)pc頁(yè)面,文中內(nèi)容即在實(shí)際的開(kāi)發(fā)過(guò)程中遇到的實(shí)際問(wèn)題。

1、問(wèn)題交代:

在pc版的列表頁(yè)面中,假設(shè)當(dāng)前在列表的第一頁(yè),想要在當(dāng)前頁(yè)面選擇幾行數(shù)據(jù),跳轉(zhuǎn)到其他頁(yè)面選擇幾行數(shù)據(jù),選擇后的數(shù)據(jù)頁(yè)面展示為已勾選狀態(tài),經(jīng)過(guò)跳轉(zhuǎn)頁(yè)面之后,數(shù)據(jù)選擇狀態(tài)依然存在,且可以將已選擇的數(shù)據(jù)的id傳到后端;即標(biāo)題所述的實(shí)現(xiàn)多頁(yè)多選、翻頁(yè)回顯問(wèn)題 。示例圖片如下:

下面第一個(gè)圖為第一頁(yè)選擇的數(shù)據(jù)信息:

 下圖為跳轉(zhuǎn)到第二頁(yè)選擇數(shù)據(jù)的截圖:

想達(dá)到的最終效果是這兩個(gè)頁(yè)面不管怎么跳轉(zhuǎn),都能顯示跳轉(zhuǎn)之前的選中狀態(tài)。

2、實(shí)現(xiàn)的步驟

2.1  設(shè)置table標(biāo)簽

下面加粗字體是實(shí)現(xiàn)多頁(yè)多選 翻頁(yè)回顯的必要設(shè)置,下面依次說(shuō)明一下

<el-table size="small" :data="listData" ref="multipleTable" row-key="getRowKeys" @select="handleCheckBox" @select-all="handleSelectAll" highlight-current-row v-loading="loading" border element-loading-text="拼命加載中" style="width: 100%;">

      <el-table-column align="center" type="selection" width="60"></el-table-column>

el-table 標(biāo)簽中設(shè)置信息解讀:

  • ref="multipleTable":ref是設(shè)置對(duì)這個(gè)el-table的引用,設(shè)置后可以在其他地方通過(guò)this.$refs.multipleTable 進(jìn)行調(diào)用使用數(shù)據(jù)
  • row-key="getRowKeys":指定數(shù)據(jù)的 Key,用來(lái)優(yōu)化 Table 的渲染;在使用 reserve-selection 功能與顯示樹(shù)形數(shù)據(jù)時(shí),該屬性是必填的。類型為 String 時(shí),支持多層訪問(wèn):user.info.id,但不支持 user.info[0].id,此種情況請(qǐng)使用 Function
  • @select="handleCheckBox":指定用戶手動(dòng)勾選數(shù)據(jù)行的 Checkbox 時(shí)觸發(fā)的事件,這個(gè)名稱要和下面method中方法名對(duì)應(yīng)上
  • @select-all="handleSelectAll":指定用戶手動(dòng)勾選全選 Checkbox 時(shí)觸發(fā)的事件,這個(gè)名稱要和下面method中方法名對(duì)應(yīng)上

el-table-column標(biāo)簽中設(shè)置的信息解讀:

  • type="selection":將el-table的第一列設(shè)置成顯示多選框

2.2 定義記錄選擇的數(shù)組

在export default 的data()中進(jìn)行定義數(shù)組,只展示了需要添加的代碼

export?default?{
??data()?{
????return?{
???????????????multipleSelection:?[],

2.3 定義手動(dòng)單選 和手動(dòng)全選的函數(shù)/方法

在export defalt的method中編寫(xiě)下面函數(shù)方法: 

 //該方法是單選時(shí)的方法
 handleCheckBox(rows, row) {      
   if (this.multipleSelection.find((item) => item == row.case_id)) {
      //下面這個(gè)filter方法就是刪除的方法
      this.multipleSelection = this.multipleSelection.filter(
        (item) => item != row.case_id
      );
    } else {
      this.multipleSelection.push(row.case_id);
    },
 
 //該方法是當(dāng)頁(yè)全選的方法
 handleSelectAll(rows) {
    if (rows.length) {
      rows.forEach((row) => {
        if (!this.multipleSelection.find((item) => item == row.case_id)) {
          this.multipleSelection.push(row.case_id);
        }
      });
    } else {
      this.listData.forEach((row) => {
        this.multipleSelection = this.multipleSelection.filter(
          (item) => item != row.case_id
        );
      });
    }
  },
 
//下面的方法是進(jìn)行設(shè)置行標(biāo)識(shí)key的方法
getRowKeys(row) {
    return row.case_id
}

2.4 寫(xiě)控制回顯部分代碼

因?yàn)樵趯?shí)現(xiàn)分頁(yè)的時(shí)候使用了分頁(yè)組件,即每次翻頁(yè)都會(huì)調(diào)用后端的list方法去查詢這個(gè)頁(yè)面的數(shù)據(jù)信息,所以回顯的邏輯要方法每次調(diào)用后端數(shù)據(jù)的邏輯中,代碼如下:

getdata(parameter) {
      this.loading = true
      /***
       * 調(diào)用后端接口
       */
      TestCaseList(parameter)
        .then(res => {
          this.loading = false
          if (res.success == false) {
            this.$message({
              type: 'info',
              message: res.msg
            })
          } else {
            this.listData = res.data
            // 分頁(yè)賦值
            this.pageparm.currentPage = this.formInline.page
            this.pageparm.pageSize = this.formInline.limit
            this.pageparm.total = res.count
            //這里是回顯的功能代碼 當(dāng)切換頁(yè)面的時(shí)候 會(huì)重新調(diào)用list方法,在這個(gè)位置進(jìn)行判斷這個(gè)數(shù)據(jù)是否回顯
            this.$nextTick(()=>{
            this.listData.forEach((item,index)=>{
              if(this.multipleSelection.findIndex(v=>v == item.case_id) >= 0){
                this.$refs.multipleTable.toggleRowSelection(
                    this.$refs.multipleTable.data[index],
                    true
                );
              }
            })
            console.log('這里是每次查詢list接口之后的操作,看看是否回顯');
            console.log("multipleSelection=", this.multipleSelection);
          })
          }
        })
        .catch(err => {
          this.loading = false
          this.$message.error('菜單加載失敗,請(qǐng)稍后再試!')
        })
    },

 具體功能實(shí)現(xiàn)講解:

this.$nextTick(()=>{
????????????this.listData.forEach((item,index)=>{
??????????????if(this.multipleSelection.findIndex(v=>v?==?item.case_id)?>=?0){
????????????????this.$refs.multipleTable.toggleRowSelection(
????????????????????this.$refs.multipleTable.data[index],
????????????????????true
????????????????);
??????????????}
????????????})

實(shí)現(xiàn)功能就是每次調(diào)用完后端的list接口,判斷查出來(lái)的case_id是否有在multipleSelection數(shù)組中的,在數(shù)組中意味著要顯示成已選中的狀態(tài),通過(guò)ref調(diào)用table數(shù)據(jù) 調(diào)用toggleRowSelection()方法實(shí)現(xiàn),即上面加粗部分代碼;

以上幾個(gè)步驟將如何實(shí)現(xiàn)的過(guò)程已完全描述

總結(jié)

到此這篇關(guān)于vue如何基于el-table實(shí)現(xiàn)多頁(yè)多選及翻頁(yè)回顯過(guò)程的文章就介紹到這了,更多相關(guān)vue el-table多頁(yè)多選及翻頁(yè)回顯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue開(kāi)發(fā)頁(yè)面自適應(yīng)屏幕尺寸的實(shí)例代碼

    vue開(kāi)發(fā)頁(yè)面自適應(yīng)屏幕尺寸的實(shí)例代碼

    使用vue開(kāi)發(fā)的頁(yè)面都是通過(guò)px設(shè)置它的尺寸,如果換了一個(gè)不同尺寸的屏幕就會(huì)出現(xiàn)頁(yè)面排版錯(cuò)亂,顯示不完整等情況,下面通過(guò)插件將px裝換為rem單位適應(yīng)不同尺寸的屏幕,需要的朋友可以參考下
    2022-12-12
  • 基于vue實(shí)現(xiàn)8小時(shí)帶刻度的時(shí)間軸根據(jù)當(dāng)前時(shí)間實(shí)時(shí)定位功能

    基于vue實(shí)現(xiàn)8小時(shí)帶刻度的時(shí)間軸根據(jù)當(dāng)前時(shí)間實(shí)時(shí)定位功能

    這篇文章主要介紹了基于vue實(shí)現(xiàn)8小時(shí)帶刻度的時(shí)間軸根據(jù)當(dāng)前時(shí)間實(shí)時(shí)定位功能,開(kāi)始時(shí)間、結(jié)束時(shí)間可配置,根據(jù)當(dāng)前時(shí)間初始化位置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Vue開(kāi)發(fā)實(shí)踐指南之應(yīng)用入口

    Vue開(kāi)發(fā)實(shí)踐指南之應(yīng)用入口

    這篇文章主要給大家介紹了關(guān)于Vue開(kāi)發(fā)實(shí)踐指南之應(yīng)用入口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • vue-cli3 設(shè)置端口號(hào)(81)無(wú)效的解決

    vue-cli3 設(shè)置端口號(hào)(81)無(wú)效的解決

    這篇文章主要介紹了vue-cli3 設(shè)置端口號(hào)(81)無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于VUE的編譯作用域及slot作用域插槽問(wèn)題

    關(guān)于VUE的編譯作用域及slot作用域插槽問(wèn)題

    這篇文章主要介紹了VUE 的編譯作用域及slot作用域插槽問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 在Linux服務(wù)器上部署vue項(xiàng)目

    在Linux服務(wù)器上部署vue項(xiàng)目

    這篇文章介紹了在Linux服務(wù)器上部署vue項(xiàng)目的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用

    Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)天氣預(yù)報(bào)小應(yīng)用,查詢一些城市的天氣情況,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue項(xiàng)目分環(huán)境打包的實(shí)現(xiàn)步驟

    Vue項(xiàng)目分環(huán)境打包的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Vue項(xiàng)目如何分環(huán)境打包,實(shí)現(xiàn)方法大概分為六步驟,需要的朋友可以參考下
    2018-04-04
  • Vuex中State的使用方法

    Vuex中State的使用方法

    這篇文章主要介紹了Vuex中State的使用方法,Vuex 使用單一狀態(tài)樹(shù),用一個(gè)對(duì)象就包含了全部的應(yīng)用層級(jí)狀態(tài),這也意味著,每個(gè)應(yīng)用將僅僅包含一個(gè) store 實(shí)例,需要的朋友可以參考下
    2023-11-11
  • vue-以文件流-blob-的形式-下載-導(dǎo)出文件操作

    vue-以文件流-blob-的形式-下載-導(dǎo)出文件操作

    這篇文章主要介紹了vue-以文件流-blob-的形式-下載-導(dǎo)出文件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論