vue 按钮 权限管制
前言
在日常我的项目中,会碰到须要依据后盾接口返回的数据,来判断以后用户的操作权限。必须当有删除权限时,就显示删除按钮。没有这个权限时,就不显示或者删除这个按钮。通过查找材料,通过vuex来实现这个性能。
步骤
1.定义buttom权限
在state
中创立buttomPermission
,用于保留后盾接口返回的权限数据。
setPermission
用于承受数据,将页面权限治理传入到buttomPermission
对象中。
应用vuexVue.use(Vuex)创立vue实例const store = new Vuex.Store({ state: { buttomPermission: {} }, mutations: { setPermission(state, permission) { state.buttomPermission = permission } }})export default store
2.定义store
import store from './store/index.js'new Vue({ store, el: '#app', render: h => h(App)})
3.创立permission
指令
新建directives
文件夹,创立permission.js
文件。
这里应用inserted
函数,在被绑定元素插入父节点时检测该元素是否有权限。
inserted( el, bindings, vnode ) { }
4.应用permission
指令
在按钮页面引入和定义 permission指令,并且在buttom中写入指令,绑定指令中绝对于的值。
<button v-permission="'add'">增加</button>
import permission from './directives/permission'
directives: {permission,},
5.删除无权限数据
在permission
指令,通过bindings
获取该按钮绑定的value值,而后在buttomPermission
对象中找到,而后判断是否有权限,如果没有权限,则删除该节点。
inserted(el, bindings, vnode) { let btnPermissionValue = bindings.value; let boolean =vnode.context.$store.state.buttomPermission[btnPermissionValue]; !boolean && el.parentNode.removeChild(el); }
6.传入状态治理数据
将状态治理数据,通过setPermission
办法传入到权限治理中
let permissions = {}this.$store.commit("setPermission", permissions);
详情
总的来说,就是通过vuex
定义一个buttomPermission
权限状态对象,而后再创立一个permissions
指令,通过对每个buttom
按钮应用permissions
指令,并且绑定该按钮特定意义的值。而后在permission.js
文件中,获取以后value
值,从buttomPermission
中失去以后按钮是否有权限,没有则间接删除掉以后按钮节点。