vue自定义指令

Posted усил

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue自定义指令相关的知识,希望对你有一定的参考价值。

使用

<template>
   <div>
    <button v-permission="['importUser']"></button>
   </div>
</template>

自定义指令

  • src/directives/permission.js
import store from '@/store'

function checkPermission (el, binding) 
  // 获取绑定的值,此处为权限 value: ['importUser']
  const  value  = binding
  // 获取所有的功能指令(后端请求回来的数据)
  const points = store.getters.userInfo.permission.points
  // 当传入的指令集为数组时
  if (value && value instanceof Array) 
    // 匹配对应的指令
    const hasPermission = points.some(point => 
      return value.includes(point)
    )
    // 如果无法匹配,则表示当前用户无该指令,那么删除对应的功能按钮
    if (!hasPermission) 
      // 移除节点
      el.parentNode && el.parentNode.removeChild(el)
    
   else 
    // eslint-disabled-next-line
    throw new Error('v-permission value is ["admin","editor"]')
  


export default 
  // 在绑定元素的父组件被挂载后调用
  mounted (el, binding) 
    checkPermission(el, binding)
  ,
  // 在包含组件的 VNode 及其子组件的 VNode 更新后调用
  update (el, binding) 
    checkPermission(el, binding)
  

  • src/directives/index.js
import permission from './permission'
export default app => 
  app.directive('permission', permission)

注册

  • src/main.js
import installDirective from '@/directives'
const app = createApp(App)
installDirective(app)
app.use(store).use(router).use(i18n).mount('#app')

以上是关于vue自定义指令的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js---自定义指令

03Vue.js---自定义指令

vue.js自定义指令入门

Vue.js学习 Item13 – 指令系统与自定义指令

什么是vue.js中的自定义指令?

Vue.js自定义指令的用法与实例