Vue 權限控制 使用自定義指令 代替v-if

參考了vue-element-admin 指令庫的permissionvue

使用Demo(demo.vue)node

<template>
  <p>admin組:<span v-permission="['admin']">可看見v-permission="['admin']"</span></p>
  
  <p>editor:<span v-permission="['editor']">可看見v-permission="['editor']"</span></p>
  
  <p>admin editor組:<span v-permission="['admin','editor']">可看見v-permission="['admin','editor']"</span></p>
  
  <p>another組:<span v-permission="['another']">可看見v-permission="['another']"</span></p>
</template>

v-permission指令代碼 註冊到全局(main.js)git

const permission={ inserted(el, binding, vnode) { const { value } = binding const roles = ['editor','admin'] if (value && value instanceof Array && value.length > 0) { const permissionRoles = value const hasPermission = roles.some(role => { return permissionRoles.includes(role) }) if (!hasPermission) { el.parentNode && el.parentNode.removeChild(el) } } else { throw new Error(`need roles! Like v-permission="['admin','editor']"`) } } } Vue.directive('permission', permission)

對比github

-  v-show (v-show的dom不隱藏,改變display用戶能夠看到不應看的信息)dom

- v-if (v-if刪除節點遺留<!-- -->的註釋)spa

易維護,明瞭code

相關文章
相關標籤/搜索