遇到了一個業務場景:
某個按鈕按下去之前需要先判斷它是否登陸,如果沒有登陸需要跳轉到對應的登陸頁面,否則就繼續該按鈕之后的操作。
對于這種問題,很顯然不能每個按鈕都去判斷,所以我思考了一下結合自定義指令和vuex完成了相應的實現。
主要的代碼實現
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() } }) }})這里封裝了一個自定義指令,添加了一個點擊事件,對于已經登陸的則調用傳進來的函數,否則通過vuex去控制登陸(此處的登陸是通過彈窗實現的)
自定義組件使用的時候也極為簡單
<div class="" v-permission-click="doSomething"> ...</div>
vuex里面的showLogin這個action無非就是對login的顯示隱藏flag的操作。
這里只是完成了簡單的登陸權限控制,從登陸權限出發,可以加入更多的權限控制,比如根據role角色判斷,然后可以全局地控制權限,且實現起來極為精簡。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答