自定义指令判断方法
permission.js
// permission.js
import Vue from 'vue';
// 是否有权限
const hasPermission = btnRoleList => {
// 当前用户的权限列表
let role = localStorage.getItem("role");
return btnRoleList.some(e => role.includes(e));
/* some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。 */
};
// 指令
const has =Vue.directive('permission', {
inserted: (el, binding, vnode) => {
console.log('directive自定义指令',el.parentNode,el, binding, vnode)
if (!hasPermission(binding.value)) {
el.parentNode.removeChild(el);
}
}
});
// 全局判断方法
Vue.prototype.$_has = hasPermission;
export {has};
全局引入
main.js
import has from '@/utils/permission'
使用
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" size="small"
v-permission="['admin','root','project','operate','mintain','normal']">
新增</el-button>