亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用elementUI怎么實現多選框反選

發布時間:2021-04-20 16:44:44 來源:億速云 閱讀:575 作者:Leah 欄目:web開發

使用elementUI怎么實現多選框反選?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

思路:一開始選用elementUI官網例子,使用selection-change,但是它只顯示當前改變的選擇,不能滿足我翻頁及檢索后還能選中數據的問題

toggleSelection(rows) {
    if (rows) {
     rows.forEach(row => {
      this.$refs.multipleTable.toggleRowSelection(row);
     });
    } else {
     this.$refs.multipleTable.clearSelection();
    }
   }

后來查詢api,發現了另外2個api,頁面上的存在本地字段 glht,列表上選中的存在本地字段 yglht.

每次要計算頁面顯示的數據是列表的第幾條數據,直接把對象放里面并不會勾選我上傳選中的數據。

emmm....知道有點蠢,但是我還沒想到別的辦法...

彈框:

<el-dialog class="contract_modal" title="信息" :visible.sync="glht_modal" width="80%" :modal="false" @close="cancel">
 <el-form :inline="true" :model="searchData" label-width="90px">
  <el-form-item label="名稱:">
   <el-input v-model.trim="searchData.mc_" size="small" class="contract_input"></el-input>
  </el-form-item>
  <span class="list_btns">
   <el-button type="primary" size="small" @click="listSearch(page, 1)" class="con_btn">搜索</el-button>
   <el-button size="small" @click="searchData = {}" class="con_btn">清空</el-button>
  </span>
 </el-form>
 <div id="list_body" class="list-body" >
  <el-table :data="tableData" stripe border  max-height="480" ref="multipleTable" @select-all="handleSelectionAll" @select="handleSelectionChange">
   <el-table-column type="selection" width="26" align="right"></el-table-column>
   <el-table-column type="index" width="50" label="序號" align="left" header-align="left"></el-table-column>
   <el-table-column prop="mc_" label="名稱" width="180" show-overflow-tooltip align="left"></el-table-column>
   
  </el-table>
  <div class="list-pagination">
   <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
           :current-page.sync="page.page" :page-sizes="[10, 20, 50, 100]":page-size="page.pageCount"
           layout="total, sizes, prev, pager, next, jumper, ->"
           :total="page.total"></el-pagination>
  </div>
 </div>
 <div slot="footer" class="dialog-footer">
  <el-button type="primary" @click="save" size="small">確定</el-button>
  <el-button @click="cancel" size="small">取消</el-button>
 </div>
</el-dialog>

methods 里,全選時與選中單個時所做的操作:

// 全選  當val有數據,即為全選;為空數組,即為取消全選
handleSelectionAll (val) {
 // 獲取所有選中的數據 
 this.records = JSON.parse(localStorage.getItem('glht'))
 if(val.length !== 0) {  
  //全選
  // this.records = Array.from(new Set(val.concat(this.records)))  發現去重不好用!只能手動push了
  // 全選選中的一定是本頁所有數據,所以循環本頁
  this.tableData.forEach((v) => {
   if(this.records.find((e,index) => { return v.id_ === e.id_})){}else {
    // 如果數組中沒有就把選中的push進去
    this.records.push(v)
   }
  })
 } else {   
  // 取消全選,在選中的所有信息中把本頁列表有的刪除
  this.tableData.forEach((v) => {
   this.records.forEach((e,index) => {
    if (e.id_ === v.id_) {
     this.records.splice(index, 1)
    }
   })
  })
 }
 // 每次選的數據暫時存一下
 localStorage.setItem('glht', JSON.stringify(this.records))
},
// 單選 
handleSelectionChange(val, row) {
 // 獲取所有選中的數據 
 this.records = JSON.parse(localStorage.getItem('glht'))
 if (this.records.length === 0) {
  // 還沒有選中任何數據
  this.records = [row]
 } else {
  if (this.records.filter(i => { return i.id_ === row.id_ }).length === 0) {
    // 已選中的數據里沒有本條(取消),把這條加進來
   this.records.push(row)
  } else {
    // 已選中的數據里有本條(取消選中),把這條刪除
   this.records.forEach((e,index) => {
    if (e.id_ === row.id_) {
     this.records.splice(index, 1)
    }
   })
  }
 }
 // 每次選的數據暫時存一下
 localStorage.setItem('glht', JSON.stringify(this.records))
},

methods 里,獲取彈出框列表與選中數據:

listGet() {
  this.$axios.post("interface", {}, { params: searchData }).then(res => {
   if (res.data.success) {
    this.tableData = res.data.data.rows;
    this.page.total = res.data.data.total;
    this.records = JSON.parse(localStorage.getItem('yglht'))
    this.toggleSelection(JSON.parse(localStorage.getItem('yglht')));  // 反選操作
   } else {
    this.$message.error(res.data.message)
   }
  })
 .catch(err => console.log(err));
},
// 反選處理
toggleSelection(rows) {
 let arr =[]
 this.tableData.forEach((e, index) => {
  rows.forEach((i, ind) => {
   if (e.id_ === i.id_) {
     arr.push(this.tableData[index])
   }
  })
 })
 if (arr) {
  this.$nextTick(() => {
   arr.forEach(row => {
    this.$refs.multipleTable.toggleRowSelection(row);
   });
  })
 } else {
  this.$refs.multipleTable.clearSelection();
 }
},

methods 里,保存與取消單個時所做的操作:

save () {
 this.glht_modal = false
 localStorage.setItem('yglht', localStorage.getItem('glht'))
 this.yglht()
},
cancel () {
 this.glht_modal = false
 // 取消時 取在頁面上的值
 localStorage.setItem('glht', localStorage.getItem('yglht'))
 // this.toggleSelection(JSON.parse(localStorage.getItem('yglht')));  直接寫不好用
 this.listGet({})  // 獲取彈出框列表數據,這里調用一次是因為防止再次打開彈出框閃現之前選擇的內容
 this.yglht()
},
yglht() {
  this.list = JSON.parse(localStorage.getItem('yglht'))
  // 處理this.list中地址、時間等頁面顯示問題
}

關于使用elementUI怎么實現多選框反選問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

六安市| 尼木县| 惠安县| 绥芬河市| 胶州市| 长丰县| 静乐县| 江口县| 揭阳市| 石泉县| 宜城市| 股票| 莎车县| 新干县| 唐山市| 正安县| 宁津县| 河东区| 华安县| 丽江市| 长阳| 龙泉市| 临武县| 沙湾县| 鹿泉市| 吉林市| 磐安县| 溧水县| 昌邑市| 富顺县| 柘荣县| 和平区| 兴海县| 贵阳市| 滕州市| 房山区| 南部县| 泽州县| 筠连县| 梅河口市| 青龙|