vuevue前端实践题目

Vue-img图片加载失败时显示默认图片

2022-01-16  本文已影响0人  autumn_3d55

1. Vue-img图片加载失败时显示默认图片

概念:在我们平时项目的开发过程中,经常会做展示网络图片的需求,但是由于网络等各种原因导致图片加载失败,无法展示出来,UI会给到我们一张默认图片来占位,通常我的处理方式如下:

2.通过注册vue自定义指令 实现

import Vue from 'vue'
//全局注册自定义指令,用于判断当前图片是否能够加载成功,可以加载成功则赋值为img的src属性,否则使用默认图片
Vue.directive('real-img', async function (el,binding) {//指令名称为:real-img
  let defaultURL = require('@/assets/images/whiteCap/image_touxian.png');//错误默认显示图片

  let imgURL = binding.value;//获取图片地址
  if (imgURL) {
      let exist = await imageIsExist(imgURL);
      if (exist) {
          el.setAttribute('src', imgURL);
      } else {
        el.setAttribute('src', defaultURL);
      }
  }
})

/**
* 检测图片是否存在
* @param url
*/
let imageIsExist = function(url) {
  return new Promise((resolve) => {
      var img = new Image();
      img.onload = function () {
          if (this.complete == true){
              resolve(true);
              img = null;
          }
      }
      img.onerror = function () {
          resolve(false);
          img = null;
      }
      img.src = url;
  })
}
// 导入全局注册自定义指令
import './plugins/plugins.js'

正常显示userInfo.headPortrait,加载失败则显示上面的defaultURL图片。

<img v-real-img="userInfo.headPortrait"/>
上一篇下一篇

猜你喜欢

热点阅读