300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > vue 自定义指令控制按钮权限

vue 自定义指令控制按钮权限

时间:2018-08-17 10:12:21

相关推荐

vue 自定义指令控制按钮权限

需求描述

用户登录获取菜单、按钮、接口权限页面上的按钮根据用户权限展示不同的样式(颜色、显示隐藏等)

实例解析

创建自定义指令

directive / btn-right / btnRight.js

// 自定义指令函数export default {inserted(el, domVal, node) {console.log('el', el);console.log('domVal', domVal);console.log('node', node);// 按钮鉴定权限--在用户登录时获取,可以通过 store、storage 等方法存储,这里取值let systemPower = ['add', 'del', 'edit'];let flag = 0;let reg = domVal.expression.split("'").join(""); // 清除传值前后的引号systemPower.map((item0, index0) => {if (reg == item0) {// 当前标签传入内容在权限列表中flag += 1}});if (flag == 0) {// 当前按钮没有权限el.classList.add("noBtnRight")} else {// 当前按钮有权限el.classList.remove("noBtnRight")}}}

directive / btn-right / index.js

// 暴露到全局import btnRight from './btnRight'const install = Vue => {Vue.directive('btnRight', btnRight)}if (window.Vue) {window['btnRight'] = btnRightVue.use(install);}btnRight.install = installexport default btnRight

main.js

import btnRight from './directive/btn-right'; Vue.use(btnRight);

应用到标签

<divclass="linkJump"v-btnRight="'add'"@click="goToActDetail($event, scope.row)">普通活动</div>

上图为 btnRight.js 的打印结果,可看出能够获取到标签 div、自定义指令的传值 ‘add’、标签节点在 btnRight.js 中判断出,当前标签传递的 ‘add’ 在权限列表中,所以视为有权限,不添加 ‘noBtnRight’ 类名

如果修改自定义标签传值为 ‘click’,去权限列表中查找,没有权限,则会添加上特殊类名 ‘noRight’

使用特殊类名就可以对无权限的元素进行操作,例如添加颜色、隐藏、禁止点击等

goToActDetail(e, item) {if (e.target.classList.contains("noBtnRight")) {// 没有权限} else {// 有权限}},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。