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

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ā)事件,用來(lái)實(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); // 通過(guò)ref打點(diǎn)調(diào)用toggleRowSelection方法,第二個(gè)必須為true
            i++;
          }
        } else {
          this.origin = index.index; // 沒(méi)按住記錄起點(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如何獲取url路由地址和參數(shù)簡(jiǎn)單示例

    Vue如何獲取url路由地址和參數(shù)簡(jiǎn)單示例

    這篇文章主要給大家介紹了Vue如何獲取url路由地址和參數(shù)的相關(guān)資料,通過(guò)簡(jiǎn)單的代碼示例,幫助讀者快速掌握Vue路由的基本用法,需要的朋友可以參考下
    2023-03-03
  • vue3的父?jìng)髯訂?wèn)題(單項(xiàng)數(shù)據(jù)流)

    vue3的父?jìng)髯訂?wèn)題(單項(xiàng)數(shù)據(jù)流)

    這篇文章主要介紹了vue3的父?jìng)髯訂?wèn)題(單項(xiàng)數(shù)據(jù)流),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue+java實(shí)現(xiàn)時(shí)間段的搜索示例

    Vue+java實(shí)現(xiàn)時(shí)間段的搜索示例

    本文主要介紹了Vue+java實(shí)現(xiàn)時(shí)間段的搜索示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vue中使用sass及解決sass-loader版本過(guò)高導(dǎo)致的編譯錯(cuò)誤問(wèn)題

    vue中使用sass及解決sass-loader版本過(guò)高導(dǎo)致的編譯錯(cuò)誤問(wèn)題

    這篇文章主要介紹了vue中使用sass及解決sass-loader版本過(guò)高導(dǎo)致的編譯錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 深入解析vue中的權(quán)限管理

    深入解析vue中的權(quán)限管理

    權(quán)限是對(duì)特定資源的訪問(wèn)許可,所謂權(quán)限控制,也就是確保用戶只能訪問(wèn)到被分配的資源,這篇文章主要介紹了vue的權(quán)限管理的相關(guān)知識(shí),需要的朋友可以參考下
    2022-06-06
  • Vue?收集表單數(shù)據(jù)方法詳情

    Vue?收集表單數(shù)據(jù)方法詳情

    這篇文章主要介紹了Vue?收集表單數(shù)據(jù)方法詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • el-upload?文件上傳組件的使用講解

    el-upload?文件上傳組件的使用講解

    Upload?上傳文件這個(gè)功能是我們?cè)谄髽I(yè)實(shí)際開發(fā)當(dāng)中使用頻率是非常高的這樣一個(gè)文件上傳的功能,element?ui組件組也給我們提供了上傳的組件,本文給大家介紹el-upload?文件上傳組件的使用,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決

    vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決

    這篇文章主要介紹了vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Vue3中虛擬dom轉(zhuǎn)成真實(shí)dom的過(guò)程詳解

    Vue3中虛擬dom轉(zhuǎn)成真實(shí)dom的過(guò)程詳解

    Vue.js?在其運(yùn)行過(guò)程中會(huì)將模板編譯成虛擬?DOM?(VNode),然后再將?VNode?渲染成實(shí)際的?DOM?節(jié)點(diǎn),這個(gè)過(guò)程是由?Vue?內(nèi)部的編譯器和渲染系統(tǒng)完成的,本文給大家介紹了Vue3中虛擬dom轉(zhuǎn)成真實(shí)dom的過(guò)程,需要的朋友可以參考下
    2024-09-09
  • 基于vue2實(shí)現(xiàn)左滑刪除功能

    基于vue2實(shí)現(xiàn)左滑刪除功能

    這篇文章主要為大家詳細(xì)介紹了基于vue2實(shí)現(xiàn)左滑刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評(píng)論