一,写一个全局函数来判断,是否有权限,然后在页面使用v-if来显示

permission.js

export function hasPermission (permission) {
    const permissions = JSON.parse(localeStorage.getItem('permissions'));
	return permissions.includes(permission);
}

返回true和false。

<div>
<h1>按钮权限</h1>
<button v-if="haspermission('system.user.add')" >新增用户</button>
<button v-if="haspermission('system.user.edit')" >修改用户</button>
<button v-if="haspermission('system.user.del')" >删除用户</button>
</div>

 



二、自定义指令v-haspermission="'system.user.add'" 这种自定义指令来判断是否显示。

<div>
<h1>按钮权限</h1>
<button v-haspermission="'system.user.add'" >新增用户</button>
<button v-haspermission="'system.user.edit'" >修改用户</button>
<button v-haspermission="'system.user.del'" >删除用户</button>
</div>

自定义一个v-haspermission指令来完成。

src下的directives/专门存放自定义指令的目录

src/directives/haspermission.js

export default {
  bind(el, bindings) {
    const permissions = localStorage.getItem('permissions');
	console.log('el', el);
	console.log('bindings', bindings);
	console.log('bindings.value', bindings.value);
	
	const needPermission = bindings.value;
	const hasPermission = permissions.inclueds(needPermission);
	if (!hasPermission) {
	  el.style.display = 'none';
	  console.log(has directives);
	  setTimeout(() => {
	    console.log("setTimeout");
		el.parentNode.removeChild(el);
	  },0)
	  //el.parentNode.removeChild(el);
	}
  }
}

不能直接el.parentNode.removeChild(el);是因为,他的操作需要在组建mounted之后,所以需要放到setTimeout内完成。