31 lines
783 B
JavaScript
31 lines
783 B
JavaScript
import role from "./role"
|
||
// 该文件规定如何role不为对应值则删除dom
|
||
// 用法:vue的指令 -> v-role="['admin']"即只允许userStore里面role属性为admin才能看见
|
||
const checkRole = (el, binding) => {
|
||
const { value } = binding
|
||
|
||
if (Array.isArray(value)) {
|
||
if (value.length > 0) {
|
||
let isHas = false
|
||
value.map((item) => {
|
||
isHas = role(item)
|
||
})
|
||
|
||
if (!isHas && el.parentNode) {
|
||
el.parentNode.removeChild(el)
|
||
}
|
||
}
|
||
} else {
|
||
throw new Error(`need role! Like v-role="['seo', 'cfo']"`)
|
||
}
|
||
}
|
||
|
||
export default {
|
||
mounted(el, binding) {
|
||
checkRole(el, binding)
|
||
},
|
||
updated(el, binding) {
|
||
checkRole(el, binding)
|
||
}
|
||
}
|