参考了vue-element-admin 指令库的permission

使用Demo(demo.vue)

<template>
<p>admin组:<span v-permission="['admin']">可看见v-permission="['admin']"</span></p> <p>editor:<span v-permission="['editor']">可看见v-permission="['editor']"</span></p> <p>admin editor组:<span v-permission="['admin','editor']">可看见v-permission="['admin','editor']"</span></p> <p>another组:<span v-permission="['another']">可看见v-permission="['another']"</span></p>
</template>

v-permission指令代码 注册到全局(main.js)

const permission={
inserted(el, binding, vnode) {
const { value } = binding
const roles = ['editor','admin']
if (value && value instanceof Array && value.length > 0) {
const permissionRoles = value
const hasPermission = roles.some(role => {
return permissionRoles.includes(role)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
} else {
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
}
}
} Vue.directive('permission', permission)

对比

-  v-show (v-show的dom不隐藏,改变display用户可以看到不该看的信息)

- v-if (v-if删除节点遗留<!-- -->的注释)

易维护,明了

Vue 权限控制 使用自定义指令 代替v-if的更多相关文章

  1. Vue基础进阶 之 自定义指令

    自定义指令-----钩子函数 自定义指令 除了内置指令,Vue也允许用户自定义指令: 注册指令:通过全局API Vue.directive可以注册自定义指令: 自定义指令的钩子函数: bind: in ...

  2. vue.js_06_vue.js的自定义指令和自定义键盘修饰符

    1.全局的自定义指令 实现:当页面刷新时,光标聚焦到搜索框中 <label> 搜索: <input type="text" class="form-co ...

  3. vue.js实现内部自定义指令和全局自定义指令------directive

    在Vue中,我们平时数据驱动视图时候,内部自带的指令有时候解决不了一些需求,这时候,Vue给我们一个很好用的东东 directive 这个单词是我们写自定义指令的关键字哦 之定义指令为我们提供了几个钩 ...

  4. Vue(十三)自定义指令

    自定义指令 分类:全局指令.局部指令 1. 自定义全局指令 使用全局方法Vue.directive(指令ID,定义对象) 2. 自定义局部指令   <!DOCTYPE html> < ...

  5. Vue滚动加载自定义指令

    用Vue在移动端做滚动加载,使用mint-ui框架, InfiniteScroll指令loadmore组件,在uc浏览器和qq浏览器都无法触发.无奈我只能自己写了. 决定用vue 的自定义指令 写滚动 ...

  6. vue 混入 mixin,自定义指令,过滤器

    vue 混入 mixin ,分发 vue 组件中重复的功能 局部的书写格式 // mixin.js var mymixin = {  // 这是一个对象:对象里面的写法与组件里面的写法一模一样,组件该 ...

  7. vue学习-day02(自定义指令,生命周期)

    目录: 1.案例:品牌管理    2.Vue-devtools的两种安装方式    3.过滤器,自定义全局或私有过滤器    4.鼠标按键事件的修饰符    5.自定义全局指令:让文本框获取焦点   ...

  8. vue学习(十七) 使用自定义指令 使文本框获得鼠标焦点

    需求:当我们进入某个页面,页面中的第一个input会自动获得焦点 光标闪烁,代表可输入 <div id="app"> //v-focus 是自定义的 <input ...

  9. vue权限控制菜单显示的简单实现

    为了对于不同角色显示不同的菜单 思路1: 本地放一份完整的菜单数据,通过后台返回角色的菜单列表.两者对比,筛选需要显示的菜单数据绑定, 这里有个问题就是路由vue实例初始化就生成了,加载的全部,人为输 ...

  10. vue权限控制菜单显示

    对于不同角色显示不同的菜单 思路1: 本地放一份完整的菜单数据,通过后台返回角色的菜单列表两者对比,筛选需要显示的菜单数据绑定,这里有个问题就是路由vue实例初始化就生成了,加载的全部,人为输入地址是 ...

随机推荐

  1. 2022年7月12,第四组,周鹏,被算法折磨的一天【哭】【哭】【哭】【puls哭】

    今天学习了JS的几种循环语法,说实话,前几天的简单让我大意了,没有闪,很成功的被搞崩了! 一杯水,一根烟,一个算法边写边骂是一天. 多少次,我满怀期待的以为它会出现想要的结果, 但现实的残酷狠狠的折磨 ...

  2. java初级开发面试题

    目录 1.java基础知识 Q1.equals和==的区别 Q2:集合的父类是什么 Q3:List.Hashmap.Set区别 Q4.java数据类型 Q5.javaIO流 Q6.jdk1.8新特性 ...

  3. [python] 基于chardet识别字符编码

    对于人类能够识别的字符,计算机会根据某一对应关系将其转换为二进制形式进行保存.这个对应关系就是字符编码表,即什么样的字符对应什么样的二进制编码.这种字符编码表往往是多种多样的,因此,如果我们想要将一个 ...

  4. [python] Python二维码生成器qrcode库入门

    Python二维码生成器qrcode库入门 qrcode是二维码生成的Python开源库,官方地址为python-qrcode.所有代码见:Python-Study-Notes. 文章目录 Pytho ...

  5. 万字干货! 使用docker部署jenkins和gitlab

    阅读本文, 需要有基础的Git, Linux, Docker, Java, Maven, shell知识, 并最少有一台内存16G以上并已经安装好了Docker的机器. 1. 概述 2. 容器互联 3 ...

  6. 算法学习笔记(5): 最近公共祖先(LCA)

    最近公共祖先(LCA) 目录 最近公共祖先(LCA) 定义 求法 方法一:树上倍增 朴素算法 复杂度分析 方法二:dfs序与ST表 初始化与查询 复杂度分析 方法三:树链剖分 DFS序 性质 重链 重 ...

  7. 企业应用架构研究系列十三:整合EFCore&Dapper 通用ORM框架EFDapper

    EntityFrameworkCore是微软官网提供的ORM框架,是轻量化.可扩展.开源和跨平台的数据访问技术框架,但是在.Net 开发圈的评论却褒贬不一.很多人认为EFCore 执行的效能比较差,很 ...

  8. mongdb遭遇勒索,用备份进行数据恢复

    mongdb遭遇勒索,用备份进行数据恢复 1.背景: 某台MongoDB服务器,没有配置用户名密码,放到公网不到一天,遭到删库勒索 All your data is a backed up. You ...

  9. java入门与进阶-P1.1+P1.2

    计算机与编程语言 计算机如何解决问题 !-- 首先计算机他是不知道自己需要去做什么的,它需要按照你所说的步骤一步一步进行直到结束 "请给我一杯水" 1.转身走到厨房; 2.找到一个 ...

  10. 在腾讯云上创建一个玩具docker-mysql数据服务

    有时候开发需求会自己做一下测试数据,在自己电脑本地安装的服务多了电脑环境会搞的很乱,这时使用云服务器安装个docker服务是一个不错的寻找. 下面步骤是在腾讯云上安装docker-mysql镜像,并导 ...