能控制显示隐藏也就可以控制读写
v-if="status==1?true:false" :disabled="status==2||status==3?false:true"
:style="status==1?firStyle:elseStyle"
我觉得这样写简单一点把
vuex:state 中存 userInfo
;getter 中根据 userInfo 存各个角色属性 R1/R2/R3/R4...
。
具体使用就是:
<button v-if="R1&&R2" :disabled="R3&&R4">按钮</button>
根据权限不同组合判断。
你可以把这些信息封装成一个 mixin 方便各组件使用。
// 一个mixin
import { mapState, mapGetters } from 'vuex';
export default {
computed: {
...mapState(['userInfo']),
...mapGetters(['R1, R2, R3, R4'])
}
};
1、建议封装一个方法,用户判断用户和按钮之间的关系。
2、demo
公共方法:
/*
2: 可操作
1: 只读
0: 不显示
*/
const checkPermission = (role, buttonType) => {
if(buttonType == 'add'){
if(['R1', 'R4'].includes(role)) return '2';
if(['R2', 'R3'].includes(role)) return '1';
return 0;
}
}
Vue页面:
let addButtonStatus = checkPermission(role, 'add');
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
我的思路是这样的,让按钮声明需要的权限,而不是通过权限来控制按钮长什么样子。实现是通过自定义的指令,通过指令内部来判断,当前按钮的表现。
如果你觉得style写在行间太多,可以封装在methods/或者computed中