vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue 按钮权限控制

Vue自定义指令实现按钮级的权限控制的示例代码

作者:骆骆爱学习

在Vue中可以通过自定义指令来实现按钮权限控制,本文主要介绍了Vue自定义指令实现按钮级的权限控制的示例代码,具有一定的参考价值,感兴趣的可以了解一下

一、自定义指令—钩子函数

自定义指令有五个生命周期(也叫钩子函数),分别是:bind,inserted,update,componentUpdated,unbind

二、钩子函数参数?

钩子函数参数说明,自定义指令中传递的常用参数:

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

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

除了 el 之外,其它参数都应该是只读的。

三、全局自定义指令

实现原理

在 el-button 按钮上设置标签数值,利用 vue的指令功能获取按钮实例对象和按钮上绑定的标签数值,与从接口拿到的按钮权限数据进行匹配,如果匹配成功,证明用户拥有该按钮的使用权限,如果发现没有使用权限,则在指令处理函数中编写代码移除该按钮,界面上就看不到该按钮了。

封装组件

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

代码如下:

import Vue from 'vue';
// 检测是否有权限
// 使用Vue.directive声明自定义指令btn-key
export const permissions = Vue.directive('permission',{
    /**
     * inserted:被绑定元素插入父节点时调用 
     * el:指令所绑定的元素,可以用来直接操作 DOM
     * binding.value:指令的绑定值,例如:v-directive="10" 中,绑定值为 10。
     */
    inserted(el,binding){
        let buttonKey = binding.value;
        // 代表某个元素需要通过权限验证
        if(buttonKey){
            let key = checkKey(buttonKey)
            if(!key){//没有权限
                el.remove()  //删除按钮
            }
        }else{
            throw new Error('缺少唯一指令')
        }
    },
}) 
 
// 检测传入的元素key是否可以显示
function checkKey(key) {
    // 获取权限数组
    let permissionData = sessionStorage.getItem("permissionData") ? sessionStorage.getItem("permissionData") : [] ;
    //如果传入的元素key不在权限数组里,则不可显示
    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>

到此这篇关于Vue自定义指令实现按钮级的权限控制的示例代码的文章就介绍到这了,更多相关Vue 按钮权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文