zoukankan      html  css  js  c++  java
  • Vue笔记--通过自定义指令实现按钮操作权限

    经常做中后台系统,此类系统的权限是比较重要,拿自己做过的一些项目做个笔记。

    Vue实现的中后台管理系统。按钮操作权限的空置一般都是通过自定义指令Vue.directive

    <el-button v-has="fq-pms" type="primary">按钮</el-button>

    通常我们会把从后台请求过来的数据存贮到Vuex或localStorage,接下来我们先注册一个全局自定义指令并监控它

    Vue.directive('has',{
      bind:function(el,binding){
        const permissons = ['lcj'] //指令列表
       if (has(binding.value, permissions)) { el.parentNode.removeChild(el);//调用元素父级删除,有时候父元素未渲染出来可以把bind换成inserted } } })

    has函数

    function has(value, permissions) {
      let isExist = true;
      if (permissions === undefined||permissions===null || permissions.length === 0) {
        return true;
      }
      for (let i = 0; i < permissions.length; i++) {
        if (permissions[i] === value) {
          isExist = false;
          break;
        }
      }
      return isExist;
    }

    bind是Vue.directive的五个生命周期(钩子函数),按照生命周期 bind>inserted>update>componentUpdate>unbind

    1. bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
    2. inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)
    3. update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新
    4. componentUpdate:指令所在组件的 VNode 及其子 VNode 全部更新后调用
    5. unbind:只调用一次,指令与元素解绑时调用  

     一般是通过操作权限是通过按钮的,菜单权限是通过前端路由和后台路由来判断的。下章会介绍Vue-router配置后台路由实现菜单权限的

  • 相关阅读:
    ActiveMQ
    bzoj 3039 悬线法求最大01子矩阵
    bzoj 1015 并查集
    bzoj 3037 贪心
    bzoj 2599 数分治 点剖分
    bzoj 2743 树状数组离线查询
    bzoj 2141 线段树套平衡树
    bzoj 3171 费用流
    bzoj 2751 快速幂
    bzoj 2956 数学展开,分段处理
  • 原文地址:https://www.cnblogs.com/liwenjian/p/11936063.html
Copyright © 2011-2022 走看看