首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Vue常用指令 (三)--按钮显示控制-动态指令

Vue常用指令 (三)--按钮显示控制-动态指令

作者头像
玖柒的小窝
修改2021-10-26 17:03:24
修改2021-10-26 17:03:24
2K0
举报
文章被收录于专栏:各类技术文章~各类技术文章~

前文学习了 Vue的自定义指令之基础篇, 先要打好基础. 及自定义指令-UI权限验证/ 点击按钮等元素显示水波纹效果. 今天来学习 Vue小知识-常用指令(三) 自定义指令绑定动态数据

Vue 动态指令

指令的参数可以是动态的。例如,在 v-mydirective:[argument]="value" 中,argument 参数可以根据组件实例数据进行更新!这使得自定义指令可以在应用中被灵活使用。

这里简单学习下根据指令绑定的动态数据, 来控制按钮的 显示, 更多功能可自行添加, 比方说: 按钮样式动态显示, 根据后台接口返回

首先看下 静态样式

通过 静态样式就知道这里面的简单逻辑了, 把静态数据换成请求的后端接口返回的数据进行, 控制显示结果

代码语言:javascript
复制
<div class="btns">
  <!-- 通过传入的内容 控制显示与否 -->
  <button v-permission="'1'">权限按钮-teamLeader</button>
  <button v-permission="'2'">权限按钮-</button>
  <button v-permission="'3'">权限按钮-test</button>
  <!-- 传入 5, 不包含这一项, 即没有权限 故不显示 -->
  <button v-permission="'5'">权限按钮-学生</button>
</div>
复制代码

动态效果

即将数据换成请求的即可

// src/directives/permission.js

代码语言:javascript
复制
function checkArray(key) {
  let perArray = ['1', '2', '3', '4', 'default']
  let index = perArray.indexOf(key)
  if (index > -1) {
    return true // 包含有这一条 即有权限
  } else {
    return false // 否则无权限, 即不显示
  }
}

const permission = {
  inserted: function (el, binding) {
    let permission = binding.value // 通过 参数 binding 获取到 指令 permission 的值
    if (permission) {
      let hasPermission = checkArray(permission)
      if (!hasPermission) {
        // 如果没有权限 就删除掉对应的 Dom 元素
        console.log('el: ', el)
        console.log('el.parentNode: ', el.parentNode)

        el.parentNode && el.parentNode.removeChild(el)
      }
    }
  },
}

export default permission

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vue 动态指令
    • 首先看下 静态样式
    • 动态效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档