自定义指令的使用场景

1.处理失败图片

如果图片加载失败:就显示默认图片,加载成功就不用管

(1)导入默认图片

import defaultImg from '@/assets/common/head.jpg'

export default {
  data() {
    return {
      defaultImg: defaultImg
    }
  },
}

(2)在img中动态设置src属性


<img v-errorImg="defaultImg" :src="avatar" class="user-avatar">

avatar是从vuex中拿到的线上图片

(3)在全局注册自定义指令

// Vue.directive('自定义指令的名字',{})
Vue.directive("errorImg", {
  inserted(el, binding) {
    el.onerror = function () {
      //元素加载执行的时候出现错误就会触发这个事件,事件触发:表示资源加载失败
      el.src = binding.value;
    };
  },
});

2.根据权限控制按钮的显示与隐藏

通过传过来的showBtn,然后再points数组中查找,如果有就表示按钮有权限,没有就不显示按钮,没有权限

(1)设置自定义指令

 <el-button v-arrow="'showBtn1'" @click="handleDownload">导出</el-button>

(2)在全局注册自定义指令

Vue.directive('arrow', {
  inserted(el, binding) {
    console.log(el, 1223)
    // 找到vuex中存储的所有权限点
    var points = store.state.user.userInfo.roles.points
    // 判断所有权限点中是否包含自定义指令传过来的标识符
    var flag = points.includes(binding.value)
    // 如果有就显示不做处理,如果没有就通过父节点移除自己
    if (!flag) {
      el.parentNode.removeChild(el)
    }
  }
})

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值