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

Vue3如何自定義指令directive(如權(quán)限控制)

 更新時間:2024年12月26日 14:48:51   作者:張小偉i  
本文詳細(xì)介紹了如何在Vue3項目中創(chuàng)建自定義指令directive1,首先,在src/directives/index.ts文件中引入自定義指令,然后,創(chuàng)建src/directives/permission.ts文件來定義具體指令邏輯,在main.ts文件中引入并注冊該指令,最后,在頁面中使用自定義指令

Vue3自定義指令directive

1.創(chuàng)建src/directives/index.ts文件

//@ts-nocheck
import { Directive } from "vue";
import { permission } from "@/directives/permission.ts";

const allGlobalDirectives = { permission };
// console.log(allGlobalDirectives, "allGlobalDirectives"); //打印發(fā)現(xiàn)是導(dǎo)出的自定義指令名,permission
export default {
  install(app) {
    Object.keys(allGlobalDirectives).forEach(key => {  //Object.keys() 返回一個數(shù)組,值是所有可遍歷屬性的key名
      app.directive(key, (allGlobalDirectives as { [key: string]: Directive })[key]);  //key是自定義指令名字;后面應(yīng)該是自定義指令的值,值類型是string
    });
  }
};

2.創(chuàng)建src/directives/permission.ts文件

import type { DirectiveBinding } from 'vue'

export const permission = (el: HTMLElement, binding: DirectiveBinding) => {
  // value 獲取用戶使用自定義指令綁定的內(nèi)容
  const {value} = binding;
  // 獲取用戶所有的權(quán)限按鈕
  // const permissionBtn = sessionStorage.getItem("permission");
  const permissionBtn = ["user.add23"];
  // 判斷用戶使用自定義指令,是否使用正確了
  if (value && value instanceof Array && value.length > 0) {
    const permissionFunc = value;
    //判斷傳遞進(jìn)來的按鈕權(quán)限,用戶是否擁有
    //Array.some(), 數(shù)組中有一個結(jié)果是true返回true,剩下的元素不會再檢測
    const hasPermission = permissionBtn.some((role: any) => {
      return permissionFunc.includes(role);
    });
    console.log("hasPermission", value, hasPermission);
    // 當(dāng)用戶沒有這個按鈕權(quán)限時,設(shè)置隱藏這個按鈕
    if (!hasPermission) {
      el.style.display = "none";
    }
  } else {
    throw new Error("need roles! Like v-permission=\"['admin','editor']\"");
  }
};

3.main.ts引入

// 引入自定義插件對象:注冊全局組件
import globalDirectives from "@/directives/index.ts";

const app = createApp(App);


// 安裝自定義指令
app.use(globalDirectives);
app.mount("#app");

4.頁面中使用

<span v-permission="['user.add']" class="padding-right-20">測試</span>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    詳解如何創(chuàng)建并發(fā)布一個 vue 組件

    這篇文章主要介紹了詳解如何創(chuàng)建并發(fā)布一個vue組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue程序化的事件監(jiān)聽器(實例方案詳解)

    Vue程序化的事件監(jiān)聽器(實例方案詳解)

    本文通過兩種方案給大家介紹了Vue程序化的事件監(jiān)聽器,每種方案通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-01-01
  • Vue中v-show添加表達(dá)式的問題(判斷是否顯示)

    Vue中v-show添加表達(dá)式的問題(判斷是否顯示)

    這篇文章主要介紹了關(guān)于Vue中v-show中添加表達(dá)式用于判斷是否顯示的問題,很多朋友經(jīng)常會遇到這樣的需求,有數(shù)據(jù)來源和標(biāo)簽類型兩行選項,需要實現(xiàn)點擊上面的某個數(shù)據(jù)來源時,標(biāo)簽類型自動切換功能,感興趣的朋友一起看看吧
    2018-03-03
  • ant design vue datepicker日期選擇器中文化操作

    ant design vue datepicker日期選擇器中文化操作

    這篇文章主要介紹了ant design vue datepicker日期選擇器中文化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue之el-select結(jié)合v-if動態(tài)控制template顯示隱藏方式

    Vue之el-select結(jié)合v-if動態(tài)控制template顯示隱藏方式

    這篇文章主要介紹了Vue之el-select結(jié)合v-if動態(tài)控制template顯示隱藏方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue使用axios實現(xiàn)文件上傳進(jìn)度的實時更新詳解

    vue使用axios實現(xiàn)文件上傳進(jìn)度的實時更新詳解

    最近在學(xué)習(xí)axios,然后項目就用到了,所以這篇文章主要給大家介紹了關(guān)于vue中利用axios實現(xiàn)文件上傳進(jìn)度的實時更新的相關(guān)資料,文中先對axios進(jìn)行了簡單的介紹,方法大家理解學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 基于Vue3與免費滿血版DeepSeek實現(xiàn)無限滾動+懶加載+瀑布流模塊及優(yōu)化過程

    基于Vue3與免費滿血版DeepSeek實現(xiàn)無限滾動+懶加載+瀑布流模塊及優(yōu)化過程

    在進(jìn)行非完全標(biāo)準(zhǔn)化數(shù)據(jù)的可視化展示時,瀑布流是一種經(jīng)常被采用的展示方法,瀑布流能夠有效地將不同大小規(guī)格的內(nèi)容以一種相對規(guī)整的方式呈現(xiàn)出來,本文給大家介紹了基于Vue3與免費滿血版DeepSeek實現(xiàn)無限滾動+懶加載+瀑布流模塊,需要的朋友可以參考下
    2025-03-03
  • vue backtop組件的實現(xiàn)完整代碼

    vue backtop組件的實現(xiàn)完整代碼

    這篇文章主要介紹了vue backtop組件的實現(xiàn)完整代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo

    Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo

    這篇文章主要介紹了Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo,通過實例代碼介紹了單個彈窗和多級彈窗的實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • vue前端測試開發(fā)watch監(jiān)聽data的數(shù)據(jù)變化

    vue前端測試開發(fā)watch監(jiān)聽data的數(shù)據(jù)變化

    這篇文章主要為大家介紹了vue測試開發(fā)watch監(jiān)聽data的數(shù)據(jù)變化,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評論