zoukankan      html  css  js  c++  java
  • Vue 权限控制 使用自定义指令 代替v-if

    参考了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删除节点遗留<!-- -->的注释)

    易维护,明了

  • 相关阅读:
    北京南天软件java工程师面试题
    祝福自己
    致青春——IT之路
    PL/SQL devloper 常用设置
    CENTOS LINUX查询内存大小、频率
    centOS安装openoffice
    echo > 和 echo >>的区别
    sqoop job 增量导入
    sqoop job从创建到执行
    sqoop导入增量数据
  • 原文地址:https://www.cnblogs.com/runrunrun/p/11639053.html
Copyright © 2011-2022 走看看