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

Vue自定義指令實現(xiàn)按鈕級的權(quán)限控制的示例代碼

 更新時間:2024年05月15日 10:48:00   作者:駱駱愛學(xué)習(xí)  
在Vue中可以通過自定義指令來實現(xiàn)按鈕權(quán)限控制,本文主要介紹了Vue自定義指令實現(xiàn)按鈕級的權(quán)限控制的示例代碼,具有一定的參考價值,感興趣的可以了解一下

一、自定義指令—鉤子函數(shù)

自定義指令有五個生命周期(也叫鉤子函數(shù)),分別是:bind,inserted,update,componentUpdated,unbind。

  • bind:只調(diào)用一次,指令第一次綁定到元素時調(diào)用。用這個鉤子函數(shù)可以定義一個綁定時執(zhí)行一次的初始化設(shè)置。( bind 時父節(jié)點為null,因為 bind 是在 dom 樹繪制前調(diào)用)
  • inserted:被綁定元素插入父節(jié)點時調(diào)用(僅保證父節(jié)點存在,但不一定已被插入文檔中,在 dom 樹繪制后調(diào)用)。
  • update:被綁定于元素所在的模板 vNode 更新時調(diào)用,但是可能發(fā)生在其子 vNode
  • 更新之前。指令的值可能發(fā)生了改變,也可能沒有??梢酝ㄟ^比較更新前后的綁定值,來忽略不必要的模板更新。
  • componentUpdated:被綁定元素所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。
  • unbind:只調(diào)用一次,指令與元素解綁時調(diào)用。

二、鉤子函數(shù)參數(shù)?

鉤子函數(shù)參數(shù)說明,自定義指令中傳遞的常用參數(shù):

el: 指令所綁定的元素,可以用來直接操作 DOM。

binding: 一個對象,包含指令的很多信息。如下:

  • name:指令名,不包括 v- 前綴。
  • value:指令的綁定值,例如:v-my-directive=“1 + 1” 中,綁定值為 2。
  • oldValue:指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
  • expression:字符串形式的指令表達式。例如 v-my-directive=“1 + 1” 中,表達式為 “1 + 1”。
  • arg:傳給指令的參數(shù),可選。例如 v-my-directive:foo 中,參數(shù)為 “foo”。
  • modifiers:一個包含修飾符的對象。例如:v-my-directive.foo.bar 中,修飾符對象為 { foo: true, bar: true }。
  • vnode:Vue編譯生成的虛擬節(jié)點。
  • oldVnode:上一個虛擬節(jié)點,僅在 update 和 componentUpdated 鉤子中可用。

除了 el 之外,其它參數(shù)都應(yīng)該是只讀的。

三、全局自定義指令

實現(xiàn)原理

在 el-button 按鈕上設(shè)置標簽數(shù)值,利用 vue的指令功能獲取按鈕實例對象和按鈕上綁定的標簽數(shù)值,與從接口拿到的按鈕權(quán)限數(shù)據(jù)進行匹配,如果匹配成功,證明用戶擁有該按鈕的使用權(quán)限,如果發(fā)現(xiàn)沒有使用權(quán)限,則在指令處理函數(shù)中編寫代碼移除該按鈕,界面上就看不到該按鈕了。

封裝組件

在 src 目錄下新建 directive 目錄,在目錄下新建 permission.js 文件:

代碼如下:

import Vue from 'vue';
// 檢測是否有權(quán)限
// 使用Vue.directive聲明自定義指令btn-key
export const permissions = Vue.directive('permission',{
    /**
     * inserted:被綁定元素插入父節(jié)點時調(diào)用 
     * el:指令所綁定的元素,可以用來直接操作 DOM
     * binding.value:指令的綁定值,例如:v-directive="10" 中,綁定值為 10。
     */
    inserted(el,binding){
        let buttonKey = binding.value;
        // 代表某個元素需要通過權(quán)限驗證
        if(buttonKey){
            let key = checkKey(buttonKey)
            if(!key){//沒有權(quán)限
                el.remove()  //刪除按鈕
            }
        }else{
            throw new Error('缺少唯一指令')
        }
    },
}) 
 
// 檢測傳入的元素key是否可以顯示
function checkKey(key) {
    // 獲取權(quán)限數(shù)組
    let permissionData = sessionStorage.getItem("permissionData") ? sessionStorage.getItem("permissionData") : [] ;
    //如果傳入的元素key不在權(quán)限數(shù)組里,則不可顯示
    let index = permissionData.indexOf(key)
    if(index > -1) {
        return true;
    }else{
        return false;
    }
}
 

引入組件

在入口文件 src\main.js 里面引入自定義指令:

import permission './directive/permission'
Vue.use(permission)

使用組件

在使用的頁面,按鈕中只需引用v-operate指令,賦值判斷即可:

<el-button @click='delHandle' type="primary" v-permission="'delete'">刪除</el-button>

到此這篇關(guān)于Vue自定義指令實現(xiàn)按鈕級的權(quán)限控制的示例代碼的文章就介紹到這了,更多相關(guān)Vue 按鈕權(quán)限控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • vue2路由中router-view不顯示的原因及踩坑記錄

    vue2路由中router-view不顯示的原因及踩坑記錄

    這篇文章主要介紹了vue2路由中router-view不顯示的原因及踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選

    vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選

    今天小編就為大家分享一篇vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue3+ts+vite中“@“路徑失效的解決辦法

    vue3+ts+vite中“@“路徑失效的解決辦法

    這篇文章主要介紹了vue3+ts+vite中“@“路徑失效的解決辦法,在使用vite腳手架生成項目時,解決引入路徑失敗的錯誤,可以按照本文介紹的步驟操作,需要的朋友可以參考下
    2024-11-11
  • vue定時器清除不掉,導(dǎo)致功能頻繁執(zhí)行問題

    vue定時器清除不掉,導(dǎo)致功能頻繁執(zhí)行問題

    這篇文章主要介紹了vue定時器清除不掉,導(dǎo)致功能頻繁執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue封裝數(shù)字框組件實現(xiàn)流程詳解

    Vue封裝數(shù)字框組件實現(xiàn)流程詳解

    這篇文章主要介紹了Vue封裝數(shù)字框組件實現(xiàn)流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • v-for中動態(tài)校驗el-form表單項的實踐

    v-for中動態(tài)校驗el-form表單項的實踐

    在項目開發(fā)中,我們經(jīng)常會遇到表單保存的功能,本文主要介紹了v-for中動態(tài)校驗el-form表單項的實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-05-05
  • 解決使用vue-awesome-swiper組件手動滾動點擊失效問題

    解決使用vue-awesome-swiper組件手動滾動點擊失效問題

    這篇文章主要介紹了使用vue-awesome-swiper組件手動滾動點擊失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 詳解vue使用$http服務(wù)端收不到參數(shù)

    詳解vue使用$http服務(wù)端收不到參數(shù)

    這篇文章主要介紹了vue使用$http服務(wù)端收不到參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue更新數(shù)據(jù)卻不渲染頁面的解決

    vue更新數(shù)據(jù)卻不渲染頁面的解決

    這篇文章主要介紹了vue更新數(shù)據(jù)卻不渲染頁面的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue和React中diff算法的區(qū)別及說明

    Vue和React中diff算法的區(qū)別及說明

    React和Vue都使用虛擬DOM和diff算法來更新DOM,但它們在實現(xiàn)上有所不同,React采用基于索引的比較,Vue采用雙端比較算法,React在比較時不復(fù)用不同類型的節(jié)點,而Vue會優(yōu)先復(fù)用兩端相同的節(jié)點,React對key的依賴較高,而Vue在沒有key時也能通過雙端比較優(yōu)化
    2025-03-03

最新評論

府谷县| 松潘县| 华阴市| 新昌县| 乌鲁木齐市| 信宜市| 红原县| 沅陵县| 东阿县| 南川市| 翁源县| 古丈县| 云南省| 安化县| 霍邱县| 曲周县| 叶城县| 邯郸市| 崇信县| 新平| 宝鸡市| 台北市| 藁城市| 琼中| 中方县| 鸡泽县| 娄底市| 黄大仙区| 平昌县| 保德县| 永州市| 竹北市| 梁平县| 绥德县| 浮山县| 莱阳市| 马关县| 中宁县| 梨树县| 宜兴市| 新郑市|