




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第vue實(shí)現(xiàn)自定義全局右鍵菜單前段時(shí)間公司在做一個(gè)webIDE項(xiàng)目,其中有對(duì)文件樹的各種操作,主要通過右鍵菜單實(shí)現(xiàn),今天就來(lái)記錄一下怎么在vue項(xiàng)目中實(shí)現(xiàn)全局的自定義右鍵菜單。效果如圖所示:
注意:
需要在項(xiàng)目中找到頁(yè)面整體布局的組件,比如項(xiàng)目使用Home.vue作為整個(gè)項(xiàng)目的公共布局,將根元素定位設(shè)置成relative,使右鍵菜單相對(duì)于其進(jìn)行定位。
本文的右鍵菜單主要使用vuex實(shí)現(xiàn)
一、vuex中定義全局狀態(tài)用于管理右鍵菜單
exportdefault{
/**
*menuContent格式:
*[
*
{
*
name:'新建文件',
//操作名
*
method:'createDirectory',
//需要執(zhí)行的對(duì)應(yīng)組件中的方法
*
disabled:true
//是否禁用,可以根據(jù)頁(yè)面具體邏輯進(jìn)行調(diào)整
*
}
*]
*
*
*整體右鍵菜單采用絕對(duì)定位,所以clientX、clientY代表是left和top定位
*/
state:{
menuContent:[],
//右鍵菜單內(nèi)容
clientX:'',
//left
clientY:'',
//top
displayContextMenu:false
//是否展示右鍵菜單
},
mutations:{
SET_CONTEXT_MENU:(state,payload)={
state.menuContent=payload.menuContent;
state.clientX=payload.clientX;
state.clientY=payload.clientY;
state.displayContextMenu=payload.displayContextMenu;
},
}
}
二、定義公共組件ContextMenu.vue
template
divv-show="contextMenu.displayContextMenu"
:style="{'left':contextMenu.clientX+'px','top':contextMenu.clientY+'px'}"
ul
liv-for="(item,i)incontextMenu.menuContent":key="i":class="item.disabled'disabled':''"
@click="emitEvent(item.method)"
{{}}
/li
/ul
/div
/template
script
import{mapState}from'vuex';
importbusfrom'@/views/common/bus';
exportdefault{
name:'ContextMenu',
data(){
return{
}
},
computed:{
...mapState(['contextMenu'])
},
methods:{
emitEvent(type){
bus.$emit('operateDirectory',type)
}
}
/script
stylelang="scss"scoped
.context-menu{
position:absolute;
background:#FFF;
color:#34495E;
min-width:100px;
box-shadow:0px2px4px0pxrgba(0,0,0,0.2);
border-radius:2px;
cursor:pointer;
z-index:1002;
ul{
text-align:left;
padding:5px10px;
li{
padding:3px4px;
font-size:12px;
list-style:none;
height:24px;
line-height:24px;
:hover{
background:#EDF6FF;
}
}
.disabled{
color:#888585;
pointer-events:none;
}
}
}
/style
三、在組件中使用
import{mapState}from'vuex';
//...
computed:{
...mapState(['contextMenu'])
created(){
bus.$on('operateDirectory',(param)={
//點(diǎn)擊右鍵菜單時(shí),應(yīng)觸發(fā)組件內(nèi)的同名方法,首先應(yīng)判斷該方法是否在本組件內(nèi)存在,存在則調(diào)用
if(this[param]){
this[param]();
}
});
//...
methods:{
showContextMenu(event,data){
event.preventDefault();
//阻止瀏覽器的默認(rèn)事件
constmenuContent={
menuContent:[
{
icon:"el-icon-upload2",
name:"運(yùn)行",
method:"run",
},
{
icon:"el-icon-refresh",
name:"編輯",
method:"editConfig",
},
{
icon:"el-icon-refresh",
name:"添加",
method:"addCommond",
},
{
icon:"el-icon-refresh",
name:"刪除",
method:"deleteConfig",
},
],
clientX:event.clientX,
clientY:event.clientY,
displayContextMenu:true,
};
this.$mit("SET_CONTEXT_MENU",menuContent);
//再次點(diǎn)擊頁(yè)面,右鍵菜單消失
document.onclick=(event)={
this.$mit("SET_CONTEXT_MENU",{
displayContextMenu:false,
});
};
},
run(){
//...
},
editConfig(){
//...
},
addCommond(){
//...
},
deleteConfig(){
//...
}
}
總結(jié)
這種可以實(shí)現(xiàn)全局右鍵菜單,并且支持自定義右鍵內(nèi)容,但是
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公共政策在道德與法律中的應(yīng)用試題及答案
- 公共政策的社會(huì)影響評(píng)估試題及答案
- 2024年干氣制乙苯催化劑項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 軟考網(wǎng)絡(luò)工程師真實(shí)案例試題及答案
- 網(wǎng)絡(luò)工程師的行業(yè)前景展望試題及答案
- 軟件設(shè)計(jì)師應(yīng)考策略總結(jié)試題及答案
- 文化政策的實(shí)施與反響試題及答案
- 2025年常州市村黨組織書記招聘鎮(zhèn)事業(yè)單位招聘筆試試卷
- 深度學(xué)習(xí)軟件設(shè)計(jì)師考試試題及答案
- 西方政治制度對(duì)少數(shù)群體權(quán)益的保障機(jī)制試題及答案
- 2025年下半年山東能源集團(tuán)權(quán)屬企業(yè)內(nèi)蒙古榮信化工限公司社會(huì)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 陜西郵政校招筆試題及答案
- 山東省濟(jì)南市2025屆高三三模歷史試卷(含答案)
- 小學(xué)語(yǔ)文大單元整體教學(xué)設(shè)計(jì)講座
- 風(fēng)力發(fā)電場(chǎng)調(diào)試規(guī)程
- 血管內(nèi)導(dǎo)管相關(guān)性血流感染預(yù)防與診治指南(2025)解讀課件
- 2025年北京市豐臺(tái)區(qū)九年級(jí)初三一模道德與法治試卷(含答案)
- 54個(gè)智慧兔送你一個(gè)字期末評(píng)語(yǔ)
- 2025年貴陽(yáng)軌道交通三號(hào)線建設(shè)運(yùn)營(yíng)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- CNAS-CC153-2018 供應(yīng)鏈安全管理體系認(rèn)證機(jī)構(gòu)要求
- 2025年甘南藏族自治州小升初數(shù)學(xué)綜合練習(xí)卷含解析
評(píng)論
0/150
提交評(píng)論