vue解决图片报错,添加默认图片

news/2024/7/10 2:52:46 标签: vue, js

vue解决图片报错,添加默认图片

  • 单个页面一处添加默认图片的方式
  • 单个页面多处添加默认图片的方式
  • 好多页面添加默认图片的方式

在我们写项目的时候,会遇到图片由于网络原因加载不出来的问题,后端返回的图片地址不正确,这个时候,为了提高用户的体验,我们通常会添加默认图片。但是在添加默认图片的时候也会有许多的问题,一开始,测试只是发现一张俩张的图片不显示,我们就单独的在某个组件中给他添加了默认图片,后来又发现好多页面的图片都需要添加这个效果,这个时候,就不能是一个页面一个页面的添加了,需要用到全局指令,这样的话,比起每个组件需要的都设置还是要方便一些。

单个页面一处添加默认图片的方式

//一开始,如果一个组件里面有一个图片需要修改,我想到的是计算属性来设置默认图片,绑定图片的onerror事件
<img :src="item.img" alt :onerror="defaultImg" />
import errorImg from '@/assets/img/default.png'; //图片路径
data(){
	return {
		errorImg :errorImg 
	}
}
computed:{
	defaultImg(){
		return 'this.src="'+errorImg+'"';
		}
}

单个页面多处添加默认图片的方式

//然后,发现有的页面多处需要添加默认图片,而且产品需求的不同,添加不同的默认图片,我又用到了方法
<img :src="item.img1"  @error="errorImg(img1,$event)" />
<img :src="item.img2"  @error="errorImg(img2,$event)" />
import img1 from '@/assets/img/default1.png'; //图片路径
import img2 from '@/assets/img/default2.png'; //图片路径
data(){
	return {
		img1 :img1,
		img2 :img2 
	}
}
methods:{
	errorImg(url,event){
		if (url == img1) {
        event.target.src = img1;
      } else if (url == img2) {
        event.target.src = img2;
      }
	}
}

好多页面添加默认图片的方式

//最后的最后,要添加的默认图片越来越多,不得已换种方式吧,选择了全局自定义指令
import apple from '@/assets/img/apple.png'; //图片
import banana from '@/assets/img/banana.png'; //图片
import pear from '@/assets/img/pear.png'; //图片
Vue.directive("errorImg",{
	bind:function(el,binding){	 
         el.onerror=function(){
	         if(binding.arg == 'apple'){
	         	 el.src = apple;
	         }else if(binding.arg == 'banana'){
	          el.src = banana;
	        }else if(binding.arg == 'pear'){
	          el.src = pear;
	        }
        }
	}
})

页面中使用
<img :src="item.img" v-errorImg:apple />//传参

http://www.niftyadmin.cn/n/1354785.html

相关文章

全局注册输入框自动获取焦点

// 全局注册输入框自动获取焦点 Vue.directive("fofo", {inserted(el) {// 指令所在标签, 被插入到真实DOM触发一次(仅触发一次)fofo(el);},update(el) {// 指令所在标签被更新时触发fofo(el);} });function fofo(el) {if (el.nodeName "INPUT" || el.nod…

狂神docker笔记(超详细)_昨晚熬夜整理的Python列表学习笔记,超详细!

来源&#xff1a;https://urlify.cn/ZnUrqm列表列表&#xff1a;用于存储任意数目、任意类型的数据集合。列表的创建1. 基本语法[]创建a [1, jack, True, 100]b []2. list()创建使用list()可以将任何可迭代的数据转化成列表a list() # 创建一个空列表b list(range(5)) # …

本地图片根据后端返回数据展示对应图片

本地图片与后端返回的数据显示有的时候&#xff0c;我们会遇到的需求是显示 排名同学的前三名&#xff0c;然而UI图是这样的&#xff0c;头像和内容是后端返回的数据&#xff0c;而排名的图片是我们本地的图片&#xff0c;我是这样处理的&#xff0c;来看代码呦&#xff01;&am…

tensorflow 每次训练结果差异_细数TensorFlow与PyTorch的优缺点,玩AI,那个框架更加适合你?...

选自builtin作者&#xff1a;Vihar Kurama机器之心编译参与&#xff1a;吴攀、杜伟谷歌的 Tensorflow 与 Facebook 的 PyTorch 一直是颇受社区欢迎的两种深度学习框架。那么究竟哪种框架最适宜自己手边的深度学习项目呢&#xff1f;本文作者从这两种框架各自的功能效果、优缺点…

盒模型继承属性

盒子模型分为标准盒模型和IE盒模型 标准盒模型的width: margin border padding width &#xff08;width content &#xff09; IE盒模型的width:margin width&#xff08;width border padding content &#xff09; #wrap{ box-sizing: border-box;*,*:before,*:aft…

python核心编程_二十本Python入门学习书籍,让你走向Python大神之路(附福利)

因为Python这门语言的应用领域很广泛&#xff0c;能做后端也能做web前端的开发&#xff0c;还有数据分享&#xff0c;人工智能等等&#xff0c;所以学习Python你重要的是你要学习Python的哪个方向&#xff0c;或者说你对什么方向感兴趣。你应该要对自己有一个规划还有定位&…

echarts中的treemap矩形树图下的nodeClick属性

可以判断点击矩形树图的节点&#xff0c;是否进入下一级 data(){ return{isClick:false } }, methods:{drawCharts(){let option{nodeClick: that.isClick? zoomToNode : false, //点击节点后的行为,false无反应,//这里的that是因为我写option的方法最外面写了let that this…

python threadpoolexecutor_Python并发初步

我们知道现在硬件飞速发展&#xff0c;多核CPU 成了标配。为了提高程序的效率&#xff0c;一个方面改变程序的顺序执行&#xff0c;用异步方式&#xff0c;防止由于某个耗时步骤&#xff0c;而影响后续程序的执行。另一个方面是采用并发方式执行&#xff0c;重复利用多核CPU优势…