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

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

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

前言

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

技術棧: elementUI

實現(xiàn)思路

要實現(xiàn)右鍵菜單 我們需要定義一個菜單欄組件 當用戶點擊table的某一行時,我們處理好顯示位置再將菜單欄渲染到table上。先實現(xiàn)這個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)聽用戶右鍵點擊table行的操作, 這個功能在elementUI table中已經(jīng)有相應的方法了:

row-contextmenu 當某一行被鼠標右鍵點擊時會觸發(fā)該事件 (row, column, event)

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

在菜單欄組件中我們通過獲取到當前點擊時瀏覽器Y軸位置將menu的高度進行合適修改。這樣當我們點擊不同table行。menu的位置也會隨著鼠標點擊時距離瀏覽器Y軸的位置相應的進行變化。

// 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)打開了先關閉一下。
          this.visable = false
        setTimeout(()=>{
          this.visable = true
        },300)
        // 阻止右鍵默認行為
        event.preventDefault()
        this.$nextTick(() => {
          this.$refs.menu.onload(row,column,event)
        })
      },
      rightClick() { 
        this.visable = false
        // 取消鼠標監(jiān)聽事件 菜單欄
        document.removeEventListener('click', this.rightClick)
      },
      handleEdit () {
        // ..do something
      },

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

有時候列表的操作項并不僅僅局限于修改和刪除。 因此我們可以使用插槽自定義需要顯示的內(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右鍵菜單的功能就實現(xiàn)完成了。實現(xiàn)這個需求最主要的一點是要計算好右鍵菜單顯示的位置。由于不同頁面table所在位置不同,因此rightKeyClick組件還需要傳遞幾個參數(shù)去進行優(yōu)化適配。這里我就不在細說了。大家可以自己去試試。

最后

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

相關文章

  • Vue路由跳轉(zhuǎn)方式區(qū)別匯總(push,replace,go)

    Vue路由跳轉(zhuǎn)方式區(qū)別匯總(push,replace,go)

    vue項目中點擊router-link標簽鏈接都屬于聲明式導航。vue項目中編程式導航有this.$router.push(),this.$router.replace(),this.$router.go()???????。這篇文章主要介紹了Vue路由跳轉(zhuǎn)方式區(qū)別匯總(push,replace,go)
    2022-12-12
  • 詳解vue渲染函數(shù)render的使用

    詳解vue渲染函數(shù)render的使用

    本篇文章主要介紹了vue渲染函數(shù)render的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • vue3插槽:el-table表頭插入tooltip及更換表格背景色方式

    vue3插槽:el-table表頭插入tooltip及更換表格背景色方式

    這篇文章主要介紹了vue3插槽:el-table表頭插入tooltip及更換表格背景色方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • elementui中使用el-tabs切換實時更新數(shù)據(jù)

    elementui中使用el-tabs切換實時更新數(shù)據(jù)

    這篇文章主要介紹了elementui中使用el-tabs切換實時更新數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實現(xiàn)圖形驗證碼

    vue實現(xiàn)圖形驗證碼

    這篇文章主要為大家詳細介紹了vue實現(xiàn)圖形驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • vue多次循環(huán)操作示例

    vue多次循環(huán)操作示例

    這篇文章主要介紹了vue多次循環(huán)操作,結合實例形式分析了vue.js針對json嵌套數(shù)據(jù)的多次循環(huán)讀取操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • Vue electron前端開啟局域網(wǎng)接口實現(xiàn)流程詳細介紹

    Vue electron前端開啟局域網(wǎng)接口實現(xiàn)流程詳細介紹

    用electron寫了一個自己用的小軟件,無后端,純本地的數(shù)據(jù)。最近想著開發(fā)一個手機端app,將PC端的數(shù)據(jù)進行同步。為了這小小的功能單獨寫個后端又麻煩。干脆前后端不分離哈哈,直接在前端軟件中開啟接口
    2022-10-10
  • VScode中配置ESlint+Prettier詳細步驟(附圖文介紹)

    VScode中配置ESlint+Prettier詳細步驟(附圖文介紹)

    這篇文章主要介紹了VScode中配置ESlint+Prettier詳細步驟,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • vue.js評論發(fā)布信息可插入QQ表情功能

    vue.js評論發(fā)布信息可插入QQ表情功能

    這篇文章主要為大家詳細介紹了vue.js評論發(fā)布信息可插入QQ表情功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue 綁定使用 touchstart touchmove touchend解析

    vue 綁定使用 touchstart touchmove touchend解析

    這篇文章主要介紹了vue 綁定使用 touchstart touchmove touchend解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

沅陵县| 教育| 莫力| 宜城市| 彰化市| 水城县| 广水市| 伽师县| 肥乡县| 白河县| 同心县| 长顺县| 卓尼县| 华亭县| 长春市| 封丘县| 交口县| 中西区| 新昌县| 佛山市| 北碚区| 宕昌县| 宜兰县| 宁明县| 扎鲁特旗| 庆城县| 和林格尔县| 东乡县| 商洛市| 大港区| 南京市| 南昌县| 营口市| 改则县| 吉水县| 曲松县| 团风县| 海兴县| 永州市| 大足县| 黔江区|