vue3自定义全局指令

  1. 在main.ts中进行注册全局指令

// 自定义全局指令
app.directive("permission",{
    mounted(el,binding){//自定义钩子函数
        const store = useUserStore();//实例化状态管理
        let val = binding.value;//获取v-permission传递过来的值
        var permissionList = store.user.perms || [];//[]作用是防止空指针异常,获取用户有哪些权限
        if(-1===permissionList.indexOf(val)){//判断有没权限
            //没有权限
            el.remove?.()
        }
    }
})
//组件中局部自定义指令
<script setup>
// 在模板中启用 v-focus
const vFocus = {
  mounted: (el) => el.focus()
}
</script>

<template>
  <input v-focus />
</template>
  1. 在需要用的地方以v-permission进行使用

 <el-button size="small" type="primary" v-permission="'sys:role:update'" @click="handleEdit(scope.$index, scope.row)">修改</el-button>

3.说明:自定义指令用起来就跟vue的系统指令一样,自定义的指令具体要达到什么效果要看自定义的内容,比如本代码判断用户是否有删除权限来显示删除按钮

4.钩子函数(不需要写到文件中,直接是使用就行了)

const myDirective = {
  // 在绑定元素的 attribute 前
  // 或事件监听器应用前调用
  created(el, binding, vnode, prevVnode) {
    // 下面会介绍各个参数的细节
  },
  // 在元素被插入到 DOM 前调用
  beforeMount(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都挂载完成后调用
  mounted(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件更新前调用
  beforeUpdate(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都更新后调用
  updated(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载前调用
  beforeUnmount(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载后调用
  unmounted(el, binding, vnode, prevVnode) {}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值