自定义指令解决图片异常

简介: 自定义指令解决图片异常

通常情况下我们设置的图片都能正常显示,但是有时候会由于图片路径失效等情况导致图片加载失败,所以我们得为图片设置实现后默认显示的备用图片,这里可以使用自定义指令的方式解决


注册自定义指令方式


Vue.directive('指令名称', {
    // 会在当前指令作用的dom元素 插入之后执行
    // options 里面是指令的表达式
    inserted: function (dom,options) {
    }
})


在项目中我们可能会注册多个自定义指令,所以我们不可能挨个去给指令注册,这里可以使用模块化的方式统一注册与管理


src/directives/index.js中管理自定义指令


export const imagerror = {
  // 指令对象 会在当前的dom元素插入到节点之后执行
  inserted(dom, options) {
    // options是 指令中的变量的解释  其中有一个属性叫做 value
    // dom 表示当前指令作用的dom对象
    // dom认为此时就是图片
    // 当图片有地址 但是地址没有加载成功的时候 会报错 会触发图片的一个事件 => onerror
    dom.onerror = function() {
      // 当图片出现异常的时候 会将指令配置的默认图片设置为该图片的内容
      // dom可以注册error事件
      dom.src = options.value // 这里不能写死
    }
  }
}


main.js注册全局自定义指令


//  import *  as  变量  得到的是一个对象 { 变量1:对象1,变量2: 对象2 ...   }
import * as directives from '@/directives'
// 注册自定义指令
// Object.keys将对象属性转化为数组形式然后进行遍历
// 遍历所有的导出的指令对象 完成自定义全局注册
Object.keys(directives).forEach(key => {
  // 注册自定义指令
  Vue.directive(key, directives[key])
})


组件中使用自定义指令


<img v-imageerror="defaultImg" :src="Photo">


data() {
    return {
      defaultImg: require('@/assets/common/default.jpg')
    }
  },


自定义指令的钩子函数可以看官网


自定义指令地址

相关文章
|
4月前
|
前端开发 JavaScript 开发者
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
本文提供了一个前端JS按钮点击事件、弹出式窗口和遮罩层的实战示例,包括HTML、CSS和JavaScript的具体实现代码,以及功能解析,演示了如何实现按钮点击后触发弹窗显示和遮罩层,并在2秒后自动关闭或点击遮罩层关闭弹窗的效果。
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
|
存储 JavaScript API
Vue3实现图片懒加载及自定义懒加载指令
Vue3实现图片懒加载及自定义懒加载指令
696 0
|
7月前
|
JavaScript
vue多条数据渲染(带图片)
vue多条数据渲染(带图片)
45 1
|
7月前
|
JavaScript 前端开发 安全
轻松创建自定义手势图案锁 - Vue 手势密码锁组件
轻松创建自定义手势图案锁 - Vue 手势密码锁组件
201 0
|
7月前
|
JavaScript
原生js实现for循环占位符绑定数据,类似模拟vue循环渲染数据
原生js实现for循环占位符绑定数据,类似模拟vue循环渲染数据
|
JavaScript 数据安全/隐私保护
vue局部加水印指令
vue局部加水印指令
217 0
|
JSON JavaScript 数据格式
解决vue图片标签动态绑定本地图片路径不显示问题
解决vue图片标签动态绑定本地图片路径不显示问题
314 0
|
JavaScript
vue 校验规则 防止多次点击弹窗重新触发
vue 校验规则 防止多次点击弹窗重新触发
165 0
|
前端开发
react图形图片验证码重新请求图片不刷新
react图形图片验证码重新请求图片不刷新
122 0