91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

      千鋒學(xué)習站 | 隨時隨地免費學(xué)

      千鋒教育

      掃一掃進入千鋒手機站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習站小程序
      隨時隨地免費學(xué)習課程

      當前位置:首頁  >  技術(shù)干貨  > Vue3 中自定義指令(一)

      Vue3 中自定義指令(一)

      來源:千鋒教育
      發(fā)布人:qyf
      時間: 2022-08-01 16:47:08 1659343628

      Vue3 中自定義指令

        TienChin 項目前端是 Vue3,前端有這樣的一個需求:有一些前端頁面上的按鈕要根據(jù)用戶的權(quán)限來決定是否展示出來,如果用戶具備相應(yīng)的權(quán)限,那么就展示對應(yīng)的按鈕;如果用戶不具備對應(yīng)的權(quán)限,那么按鈕就隱藏起來。大致上就這樣一個需求。

        看到這個需求,可能有小伙伴首先想到用 v-if 指令,這個指令確實也能做,但是,由于用戶具備的權(quán)限一般來說可能是多個,甚至可能還有通配符,所以這個比對并不是一個容易的事情,肯定得寫方法。所以,如果能用一個指令來實現(xiàn)這個功能,那么就會顯得專業(yè)很多了。

        說干就干,我們來看看 Vue3 中如何自定義指令。

        1. 成果展示

        我們先來看看實現(xiàn)自定義指令最終的使用方式:

            <button @click="btnClick" v-hasPermission="['user:delete']">刪除用戶</button>

        小伙伴們看到,這個 v-hasPermission 就是我們的自定義指令,如果當前用戶具備 user:delete 權(quán)限,這個按鈕就會展示出來,如果當前用戶不具備這個權(quán)限,這個按鈕就不會展示出來。

        2. 指令基礎(chǔ)

        先要和小伙伴們說一下,Vue2 和 Vue3 在自定義指令上有一些差異,并不完全一致,下面的介紹主要是針對 Vue3 的介紹。

        我先來和小伙伴們分享一下我們具體是怎么做的,然后在講解代碼的時候再來和大家說說各個參數(shù)的含義。

        2.1 兩種作用域

        自定義指令可以定義全局的,也可以定義局部的。

        在正式開搞之前,小伙伴們需要先明白,自定義指令有兩種作用域,一種是局部的自定義指令,還有一種是全局的自定義指令。局部的自定義指令就只能在當前 .vue 文件中使用,全局的則可以在所有的 .vue 文件中使用。

        2.1.1 局部指令

        直接在當前 .vue 文件中定義即可,如下:

        directives: {

        focus: {

        // 指令的定義

        mounted(el) {

        el.focus()

        }

        }

        }

        不過,在 Vue3 中,也可以這樣寫:

      0

        這里我自定義了一個名叫 onceClick 的指令,給一個 button 按鈕加上這個指令之后,可以設(shè)置這個 button 按鈕在點擊多久之后,處于禁用狀態(tài),防止用戶重復(fù)點擊。

        小伙伴們看,這個指令的執(zhí)行邏輯其實很簡單,el 相當于添加了這個指令的元素,監(jiān)聽該元素的點擊事件,如果點擊該元素時,該元素不是處于禁用狀態(tài),那么就設(shè)置該元素為禁用,給一個定時任務(wù),到期后使該元素變?yōu)榭捎?。這里邊具體的參數(shù),下面會跟大家詳細介紹。

        不過這只是一個局部指令,只能在當前 .vue 文件中使用,我們也可以定義全局指令,這樣就可以在所有的 .vue 文件中使用了。

        2.1.2 全局指令

        全局指令我們一般寫在 main.js 中,或者寫一個單獨的 js 文件然后在 main.js 中引入,下面的例子是直接寫在 main.js 中:

        const app = createApp(App);

        app.directive('onceClick',{

        mounted(el, binding, vnode) {

        el.addEventListener('click', () => {

        if (!el.disabled) {

        el.disabled = true;

        setTimeout(() => {

        el.disabled = false;

        }, binding.value || 1000);

        }

        });

        }

        })

        這樣,我們就可以隨時隨地去使用 v-onceClick 這個指令了。

        可能小伙伴感覺比較疑惑,自定義指令時候的 mounted 以及這里的參數(shù)都是咋回事,那么接下來松哥就來和大家詳細介紹一下這些方法和參數(shù)。

        更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。

      tags:
      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習老師24小時內(nèi)將與您1V1溝通
      免費領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學(xué) 138****2860 剛剛成功領(lǐng)取
      王同學(xué) 131****2015 剛剛成功領(lǐng)取
      張同學(xué) 133****4652 剛剛成功領(lǐng)取
      李同學(xué) 135****8607 剛剛成功領(lǐng)取
      楊同學(xué) 132****5667 剛剛成功領(lǐng)取
      岳同學(xué) 134****6652 剛剛成功領(lǐng)取
      梁同學(xué) 157****2950 剛剛成功領(lǐng)取
      劉同學(xué) 189****1015 剛剛成功領(lǐng)取
      張同學(xué) 155****4678 剛剛成功領(lǐng)取
      鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
      董同學(xué) 138****2867 剛剛成功領(lǐng)取
      周同學(xué) 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT