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
参考