Vue.directive指令实现按钮级别权限控制

Vue.directive文档:
https://cn.vuejs.org/v2/guide/custom-directive.html

使用

定义一个按钮级别指令


// 获取用户角色, 可以从cookie中获取
function getRole() {
  return 'admin'
}

// 校验用户权限,传入一个数组
function hasPermission(role) {
  return role.includes(getRole())
}

// 注册一个全局自定义指令 `v-role`
Vue.directive('role', {
  inserted: (el, binding, vnode) => {
    // 如果没有权限就移除此节点
    if (!hasPermission(binding.value)) {
      el.parentNode.removeChild(el);
    }
  }
})

使用示例

<template>
  <div>
    <div v-role="['user', 'admin', 'superAdmin']">user</div>
    <div v-role="['admin', 'superAdmin']">admin</div>
    <div v-role="['superAdmin']">superAdmin</div>
  </div>
</template>

问题:el.parentNode获取不到

将bind替换为inserted

参考
Vue 指令实现按钮级别权限管理功能

发布了1446 篇原创文章 · 获赞 396 · 访问量 139万+

猜你喜欢

转载自blog.csdn.net/mouday/article/details/104656252