最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue按住shift鍵多選方式(以element框架的table為例)

 更新時(shí)間:2024年03月08日 08:41:32   作者:loser60  
這篇文章主要介紹了vue按住shift鍵多選方式(以element框架的table為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue按住shift鍵多選

1、首先要在element組件中寫一個(gè)事件

@select = “pinSelect”,pinSelect是自定義命名

2、在data中添加兩個(gè)變量

自定義命名origin: -1是起點(diǎn)數(shù),pin:false是默認(rèn)不按住

3、在 mounted()寫鍵盤事件

keydown按住和keyup松開事件

4、在created()遍歷數(shù)據(jù)數(shù)組

并且賦值索引

5、然后在methods:中寫

完整的代碼

<template>
<!-- 按住shift鍵選擇 -->
  <div>
    <!-- 這里添加element組件table的select觸發(fā)事件,用來實(shí)現(xiàn)按住shift多選的 -->
    <el-table
      :data="tableData"
      tooltip-effect="dark"
      style="width: 100%"
      @selection-change="handleSelectionChange"
      @select = "pinSelect"
      ref="multipleTable"  
      >
      
      <el-table-column
        type="selection"
        width="55">
      </el-table-column>
      <el-table-column
        label="日期"
        width="120">
        <template slot-scope="scope">{{ scope.row.date }}</template>
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="120">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址"
        show-overflow-tooltip>
      </el-table-column>
      </el-table>
      <div style="margin-top: 20px">
        <el-button @click="toggleSelection([tableData[1], tableData[2]])">切換第二、第三行的選中狀態(tài)</el-button>
        <el-button @click="toggleSelection()">取消選擇</el-button>
    </div>
  </div>
</template>
<script>
export default {
  name:'ElementTable',
   data() {
      return {
        origin: -1, // 這里給一個(gè)變量作為起點(diǎn)
        pin: false, // 這里給一個(gè)變量,默認(rèn)為false,不按住
        tableData: [{
          date: '2016-05-01',
          name: '王幼虎',
          address: '上海市普陀區(qū)金沙江路 1511 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀區(qū)金沙江路 1512 弄'
        }, {
          date: '2016-05-03',
          name: '王中虎',
          address: '上海市普陀區(qū)金沙江路 1513 弄'
        }, {
          date: '2016-05-04',
          name: '王老虎',
          address: '上海市普陀區(qū)金沙江路 1514 弄'
        }, {
          date: '2016-05-05',
          name: '王死虎',
          address: '上海市普陀區(qū)金沙江路 1515 弄'
        }, {
          date: '2016-05-06',
          name: '王骨虎',
          address: '上海市普陀區(qū)金沙江路 1516 弄'
        }, {
          date: '2016-05-07',
          name: '王灰虎',
          address: '上海市普陀區(qū)金沙江路 1517 弄'
        }],
        multipleSelection: []
      }
    },
    methods: {
      toggleSelection(rows) {
        if (rows) {
          rows.forEach(row => {
            this.$refs.multipleTable.toggleRowSelection(row);
          });
        } else {
          this.$refs.multipleTable.clearSelection();
        }
      },
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      // 這里是select事件開始
      pinSelect (item, index) {
        const data = this.$refs.multipleTable.tableData; // 獲取所以數(shù)據(jù)
        const origin = this.origin; // 起點(diǎn)數(shù) 從-1開始
        const endIdx = index.index; // 終點(diǎn)數(shù)   
        if (this.pin && item.includes(data[origin])) { // 判斷按住
          const sum = Math.abs(origin - endIdx) + 1;// 這里記錄終點(diǎn)
          const min = Math.min(origin, endIdx);// 這里記錄起點(diǎn)
          let i = 0;
          while (i < sum) {
            const index = min + i;
              this.$refs.multipleTable.toggleRowSelection(data[index], true); // 通過ref打點(diǎn)調(diào)用toggleRowSelection方法,第二個(gè)必須為true
            i++;
          }
        } else {
          this.origin = index.index; // 沒按住記錄起點(diǎn)
        }
      }
      // 這里是select事件結(jié)束
    },
    // 這里是獲取鍵盤事件
    mounted(){
      window.addEventListener('keydown', code => { // 這個(gè)是獲取鍵盤按住事件
      // console.log(code); // 這個(gè)是你按住鍵盤打印出鍵盤信息,在瀏覽器中自行查看
      if (code.keyCode === 16 && code.shiftKey) { // 判斷是否按住shift鍵,是就把pin賦值為true
          this.pin = true;
        }
      });
      window.addEventListener('keyup', code => { // 這個(gè)是獲取鍵盤松開事件
        if(code.keyCode === 16){ // 判斷是否松開shift鍵,是就把pin賦值為false
          this.pin = false;
        }
      });
    },
    created(){
      this.tableData.forEach((item, index) => {// 遍歷索引,賦值給data數(shù)據(jù)
        item.index = index;
      })
    }
  }
</script>
<style scoped>

</style>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue實(shí)現(xiàn)動(dòng)態(tài)查詢規(guī)則生成組件

    Vue實(shí)現(xiàn)動(dòng)態(tài)查詢規(guī)則生成組件

    今天我們來給大家介紹下在Vue開發(fā)中我們經(jīng)常會(huì)碰到的一種需求場景,本文主要介紹了Vue動(dòng)態(tài)查詢規(guī)則生成組件,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • vue如何自定義事件傳參

    vue如何自定義事件傳參

    這篇文章主要介紹了vue如何自定義事件傳參,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue+Element UI+vue-quill-editor富文本編輯器及插入圖片自定義

    Vue+Element UI+vue-quill-editor富文本編輯器及插入圖片自定義

    這篇文章主要為大家詳細(xì)介紹了Vue+Element UI+vue-quill-editor富文本編輯器及插入圖片自定義,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • vue的for循環(huán)使用方法

    vue的for循環(huán)使用方法

    在本篇文章里小編給大家整理了關(guān)于vue的for循環(huán)使用方法和步驟,有需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • vue-router如何實(shí)現(xiàn)history模式配置

    vue-router如何實(shí)現(xiàn)history模式配置

    這篇文章主要介紹了vue-router如何實(shí)現(xiàn)history模式配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解決betterScroll在vue中存在圖片時(shí),出現(xiàn)拉不動(dòng)的問題

    解決betterScroll在vue中存在圖片時(shí),出現(xiàn)拉不動(dòng)的問題

    今天小編就為大家分享一篇解決betterScroll在vue中存在圖片時(shí),出現(xiàn)拉不動(dòng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3中Slot插槽透傳,二次封裝Arco的table組件詳解

    Vue3中Slot插槽透傳,二次封裝Arco的table組件詳解

    這篇文章主要介紹了Vue3中Slot插槽透傳,二次封裝Arco的table組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue讀取本地的excel文件并顯示在網(wǎng)頁上方法示例

    vue讀取本地的excel文件并顯示在網(wǎng)頁上方法示例

    這篇文章主要介紹了vue讀取本地的excel文件并顯示在網(wǎng)頁上方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue中el-form-item展開項(xiàng)居中的實(shí)現(xiàn)方式

    vue中el-form-item展開項(xiàng)居中的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue中el-form-item展開項(xiàng)居中的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • uniapp和vue的區(qū)別詳解

    uniapp和vue的區(qū)別詳解

    這篇文章主要介紹了uniapp和vue的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評(píng)論

淮北市| 浪卡子县| 瑞金市| 尤溪县| 宁南县| 湄潭县| 宣恩县| 宝山区| 肇州县| 广昌县| 乌拉特中旗| 沭阳县| 苗栗县| 佛学| 济源市| 无锡市| 陆良县| 德州市| 涡阳县| 香格里拉县| 图们市| 尚义县| 邓州市| 布拖县| 东乌珠穆沁旗| 苍溪县| 公主岭市| 荆门市| 永州市| 西青区| 上高县| 霍邱县| 讷河市| 定州市| 台东县| 万载县| 南阳市| 台州市| 达日县| 邢台县| 晴隆县|