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

    易维护,明了

  • 相关阅读:
    [require-js]向下滑动ajax加载的javascript实现
    Date的ToString方法
    GMAT语法总结
    流程控制语句:if、if else、if else if、嵌套if
    Random类
    Scanner类
    java运算符
    java数据类型转换
    mysql查询语句
    mysql常用语句
  • 原文地址:https://www.cnblogs.com/runrunrun/p/11639053.html
Copyright © 2011-2022 走看看