詳解vue + vuex + directives實(shí)現(xiàn)權(quán)限按鈕的思路
遇到了一個(gè)業(yè)務(wù)場(chǎng)景:
某個(gè)按鈕按下去之前需要先判斷它是否登陸,如果沒有登陸需要跳轉(zhuǎn)到對(duì)應(yīng)的登陸頁面,否則就繼續(xù)該按鈕之后的操作。
對(duì)于這種問題,很顯然不能每個(gè)按鈕都去判斷,所以我思考了一下結(jié)合自定義指令和vuex完成了相應(yīng)的實(shí)現(xiàn)。
主要的代碼實(shí)現(xiàn)
const directive = Vue.directive('permission-click', {
bind: (el, binding, vnode) => {
el.addEventListener('click', (e) => {
if (!store.getters.isLogin) {
store.dispatch('showLogin')
} else {
typeof binding.value === 'function' && binding.value()
}
})
}
})
這里封裝了一個(gè)自定義指令,添加了一個(gè)點(diǎn)擊事件,對(duì)于已經(jīng)登陸的則調(diào)用傳進(jìn)來的函數(shù),否則通過vuex去控制登陸(此處的登陸是通過彈窗實(shí)現(xiàn)的)
自定義組件使用的時(shí)候也極為簡(jiǎn)單
<div class="" v-permission-click="doSomething"> ... </div>
vuex里面的showLogin這個(gè)action無非就是對(duì)login的顯示隱藏flag的操作。
這里只是完成了簡(jiǎn)單的登陸權(quán)限控制,從登陸權(quán)限出發(fā),可以加入更多的權(quán)限控制,比如根據(jù)role角色判斷,然后可以全局地控制權(quán)限,且實(shí)現(xiàn)起來極為精簡(jiǎn)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue3實(shí)現(xiàn)全局loading指令的示例詳解
- vue全局注冊(cè)自定義指令防抖解析
- vue全局自定義指令和局部自定義指令的使用
- Vue全局自定義指令Modal拖拽的實(shí)踐
- vue全局自定義指令-元素拖拽的實(shí)現(xiàn)代碼
- vue directive定義全局和局部指令及指令簡(jiǎn)寫
- 對(duì)Vue2 自定義全局指令Vue.directive和指令的生命周期介紹
- vue3的自定義指令directives實(shí)現(xiàn)
- vue 自定義指令directives及其常用鉤子函數(shù)說明
- vue?filters和directives訪問this的問題詳解
- vue通過指令(directives)實(shí)現(xiàn)點(diǎn)擊空白處收起下拉框
- vue全局指令文件?directives詳解
相關(guān)文章
vue?批量自動(dòng)引入并注冊(cè)組件或路由實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了vue?批量自動(dòng)引入并注冊(cè)組件或路由實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
關(guān)于vue3+echart5?遇到的坑?Cannot?read?properties?of?undefine
這篇文章主要介紹了vue3+echart5?遇到的坑?Cannot?read?properties?of?undefined?(reading?'type'),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
vite.config.ts如何加載.env環(huán)境變量
這篇文章主要介紹了vite.config.ts加載.env環(huán)境變量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10

