当前位置:首页 > 编程笔记 > 正文
已解决

自定义权限指令与防止连点指令

来自网友在路上 152852提问 提问时间:2023-09-21 13:40:37阅读次数: 52

最佳答案 问答题库528位专家为你答疑解惑

1.权限指令

// 注册一个全局自定义权限指令 `v-permission`
Vue.directive('permission', {inserted: function(el, binding, vnode) {const {value} = binding; // 指令传的值// 'user:edit:phone','sysData:sample'const permissions = ['user:edit:address', 'sysData:entrust', 'sysData:flow']; // 自己拥有的所有权限if (value && value instanceof Array && value.length > 0) {const permissionFlag = value; // 元素上的权限const hasPermissions = permissions.some(permission => {return permissionFlag.includes(permission)})if (!hasPermissions) {el.parentNode && el.parentNode.removeChild(el)}} else {uni.showToast({title: '请设置操作权限标签值',icon: 'none'})}}
})

1.1模板代码-->使用

    <button v-permission="['user:edit:address','user:edit:phone']">自定义权限指令</button><view class="tabs"><view v-permission="['sysData:entrust']">委托单</view><view v-permission="['sysData:flow']">流转卡</view><view v-permission="['sysData:sample']">样品标签</view></view>

1.1运行结果

2. 防止连点指令

// 注册一个全局自定义防抖指令 `v-debounce`  连点多次只执行最后一次
Vue.directive('debounce', {inserted: function(el, binding, vnode) {let timer;el.addEventListener('click', () => {if (timer) {clearTimeout(timer)}timer = setTimeout(() => {binding.value()}, binding.arg || 500)})}
})

2.1模板代码-->使用

<button v-debounce:500="customFunc">自定义防抖指令</button>

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"自定义权限指令与防止连点指令":http://eshow365.cn/6-10724-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!