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