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

element表格組件實(shí)現(xiàn)右鍵菜單的功能

 更新時(shí)間:2022年03月23日 15:18:03   作者:李知恩  
本文主要介紹了element表格組件實(shí)現(xiàn)右鍵菜單的功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

最近產(chǎn)品給我提了個(gè)需求 ————想要實(shí)現(xiàn)用戶右鍵table的某一行時(shí),顯示該行操作欄的功能。覺得這個(gè)需求挺有意思的,特此分享給大家。

技術(shù)棧: elementUI

實(shí)現(xiàn)思路

要實(shí)現(xiàn)右鍵菜單 我們需要定義一個(gè)菜單欄組件 當(dāng)用戶點(diǎn)擊table的某一行時(shí),我們處理好顯示位置再將菜單欄渲染到table上。先實(shí)現(xiàn)這個(gè)rightKeyMenu組件:

// right-key-menu.vue 
<template>
  <div id="right-key-menu" class="right-key-menu">
    <div class="rightKeyMenuItem" @click="$emit('edit')">編輯</div>
    <div class="rightKeyMenuItem" @click="$emit('del')">刪除</div>
  </div>
</template>
<script>
 //...忽略
  methods: {
        onload (row, column,event) {
           //調(diào)整菜單出現(xiàn)的位置
          let menu = document.querySelector('#right-key-menu')
          let betweenHeight = document.body.clientHeight - event.clientY
          if (betweenHeight < 150) {
            menu.style.top = event.clientY -80 + 'px'
          } else {
            menu.style.top = event.clientY -30 + 'px'
          }
          menu.style.left = event.clientX + 20 + 'px'
          // 監(jiān)聽dom的click事件
          document.addEventListener('click', this.$emit('rightClick')) 
       }
        }
  </script>      
<style>
.right-key-menu {
  display: block;
  line-height: 34px;
  text-align: center;
}
.right-key-menu:not(:last-child) {
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.right-key-menu {
  position: absolute;
  background-color: #fff;
  width: 100px;
  font-size: 12px;
  color: #444040;
  border-radius: 4px;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  border-radius: 3px;
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  white-space: nowrap;
  z-index: 1000;
}
.rightKeyMenuItem:hover {
  cursor: pointer;
  background: #66b1ff;
  border-color: #66b1ff;
  color: #fff;
}
</style>

使用rightKeyClick組件。我們需要監(jiān)聽用戶右鍵點(diǎn)擊table行的操作, 這個(gè)功能在elementUI table中已經(jīng)有相應(yīng)的方法了:

row-contextmenu 當(dāng)某一行被鼠標(biāo)右鍵點(diǎn)擊時(shí)會(huì)觸發(fā)該事件 (row, column, event)

觸發(fā)這個(gè)方法然后將參數(shù)都傳遞過(guò)去。修改visable的值將菜單欄組件顯現(xiàn)出來(lái)。

在菜單欄組件中我們通過(guò)獲取到當(dāng)前點(diǎn)擊時(shí)瀏覽器Y軸位置將menu的高度進(jìn)行合適修改。這樣當(dāng)我們點(diǎn)擊不同table行。menu的位置也會(huì)隨著鼠標(biāo)點(diǎn)擊時(shí)距離瀏覽器Y軸的位置相應(yīng)的進(jìn)行變化。

// business-table
<template>
<div>
<el-table
 :data="tableData"
  @row-contextmenu="rowContextmenu"
  border> 
 //...忽略
</el-table>
<rightKeyMenu v-if="visable"
              @rightClick="rightClick" 
              ref="menu" 
              @edit="handleEdit"
              @del="handleDel">
              </rightKeyMenu>
 </div>
</template>
import rightKeyMenu from '@component/right-key-menu/index'
export default {
   components: {
      rightKeyMenu
    },
    methods: {
      rowContextmenu (row, column, event) {
        //如果之前已經(jīng)打開了先關(guān)閉一下。
          this.visable = false
        setTimeout(()=>{
          this.visable = true
        },300)
        // 阻止右鍵默認(rèn)行為
        event.preventDefault()
        this.$nextTick(() => {
          this.$refs.menu.onload(row,column,event)
        })
      },
      rightClick() { 
        this.visable = false
        // 取消鼠標(biāo)監(jiān)聽事件 菜單欄
        document.removeEventListener('click', this.rightClick)
      },
      handleEdit () {
        // ..do something
      },

      handleDel () {
       // ..do something
      }
    }
  }

有時(shí)候列表的操作項(xiàng)并不僅僅局限于修改和刪除。 因此我們可以使用插槽自定義需要顯示的內(nèi)容。

<template>
  <div id="right-key-menu" class="right-key-menu">
    <div class="rightKeyMenuItem" @click="$emit('edit')">編輯</div>
    <div class="rightKeyMenuItem" @click="$emit('del')">刪除</div>
    <div class="rightKeyMenuItem"><slot name="more"></slot></div>
  </div>
</template>

至此。element右鍵菜單的功能就實(shí)現(xiàn)完成了。實(shí)現(xiàn)這個(gè)需求最主要的一點(diǎn)是要計(jì)算好右鍵菜單顯示的位置。由于不同頁(yè)面table所在位置不同,因此rightKeyClick組件還需要傳遞幾個(gè)參數(shù)去進(jìn)行優(yōu)化適配。這里我就不在細(xì)說(shuō)了。大家可以自己去試試。

最后

到此這篇關(guān)于element表格組件實(shí)現(xiàn)右鍵菜單的功能的文章就介紹到這了,更多相關(guān)element表格右鍵菜單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中粘貼板clipboard的使用方法舉例

    vue中粘貼板clipboard的使用方法舉例

    在Web應(yīng)用程序中剪貼板(Clipboard)操作是非常常見的操作之一,這篇文章主要給大家介紹了關(guān)于vue中粘貼板clipboard使用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題

    解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題

    這篇文章主要介紹了解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 如何區(qū)分vue中的v-show 與 v-if

    如何區(qū)分vue中的v-show 與 v-if

    這篇文章主要介紹了如何區(qū)分vue中的v-show 與 v-if ,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-09-09
  • Node.js path模塊,獲取文件后綴名操作

    Node.js path模塊,獲取文件后綴名操作

    這篇文章主要介紹了Node.js path模塊,獲取文件后綴名操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue 折疊展示多行文本組件的實(shí)現(xiàn)代碼

    vue 折疊展示多行文本組件的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue 折疊展示多行文本組件,自動(dòng)根據(jù)傳入的expand判斷是否需要折疊,非常完美,文章通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • 詳解如何使用Vue2做服務(wù)端渲染

    詳解如何使用Vue2做服務(wù)端渲染

    本篇文章主要介紹了如何使用Vue2做服務(wù)端渲染 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Vue文本模糊匹配功能如何實(shí)現(xiàn)

    Vue文本模糊匹配功能如何實(shí)現(xiàn)

    這篇文章主要介紹了Vue文本模糊匹配功能如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 淺談使用Vue完成移動(dòng)端apk項(xiàng)目

    淺談使用Vue完成移動(dòng)端apk項(xiàng)目

    這幾天,我做了一個(gè)vue移動(dòng)端的小項(xiàng)目,本文主要介紹了Vue移動(dòng)端apk項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue+Element?UI實(shí)現(xiàn)復(fù)制當(dāng)前行數(shù)據(jù)的功能

    Vue+Element?UI實(shí)現(xiàn)復(fù)制當(dāng)前行數(shù)據(jù)的功能

    這篇文章主要介紹了如何使用Vue?+?Element?UI?實(shí)現(xiàn)在列表的操作欄新增一個(gè)復(fù)制按鈕,復(fù)制當(dāng)前行的數(shù)據(jù)可以打開新增彈窗后亦可以跳轉(zhuǎn)到新增頁(yè)面,感興趣的小伙伴可以參考下
    2023-11-11
  • vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件功能

    vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件功能

    這篇文章主要介紹了vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件,先使用element-plus寫好上傳組件,然后假設(shè)有個(gè)提交按鈕,點(diǎn)擊上傳文件請(qǐng)求接口,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評(píng)論