一、在src下新建directive文件夹
二、定义index.js文件,在vue上注入自定义指令
import hasBtn from './permission/hasBtn'
const install = function (Vue) {
Vue.directive('hasBtn', hasBtn)
}
if (window.Vue) {
window['hasBtn'] = hasBtn
Vue.use(install); // eslint-disable-line
}
export default install
三、编写自定义指令
hasBtn.js文件
/**
* 设置操作权限标识符
*/
export default {
inserted(el, binding, vnode) {
/** 从binding中获取dom元素的value值 */
const { value } = binding
/** 存放value值 */
const btn_permission = value;
/** 拿到所有具备权限按钮的集合,通过传入的按钮id进行匹配 */
const permissions = JSON.parse(sessionStorage.getItem('btnarr'))
/** 利用some查询,只要有一个元素满足条件就返回true,全部不满足返回false */
var hasPermissions = permissions.some(permission => {
return btn_permission == permission.menuId
})
/** 传入的按钮id不存在集合里面就移除该节点 */
if (!hasPermissions) {
el.parentNode && el.parentNode.removeChild(el)
}
}
}
四、使用
例如在一个vue页面里面的一个新增按钮加上v-hasBtn属性
<el-button v-hasBtn="15" type="primary" icon="el-icon-plus" size="mini" @click="addRelease">新增</el-button>
直接传入该按钮的id,即 v-hasBtn=”15″,vue的自定义指令都是用v-开头即可,此时就可以触发自定义指令定义的函数,达到按钮权限可控的目的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/149681.html