当前位置: 首页 > news >正文

vue自定义指令---处理加载图片失败时出现的碎图,onerror事件

目录

一、自定义指令

        1、局部注册和使用

        2、全局注册和使用

二、自定义指令处理图片加载失败(碎图)

一、自定义指令

        vue中除v-model、v-show等内置指令之外,还允许注册自定义指令,获取DOM元素,扩展额外的功能。

        1、局部注册和使用

        注册在组件内的script内的directives内

export default {directives:{focus:{ //自定义指令名inserted(el){ //el就是使用此指令的DOM元素,此处el指这个input框el.focus() //此el对应的DOM元素自动获取焦点}}}
};

        使用时,v-自定义指令名即可

      <input type="text" v-focus>

        2、全局注册和使用

在main.js用 Vue.directive()方法来进行注册, 以后随便哪个.vue文件里都可以直接用v-fofo指令

Vue.directive('Color', {inserted(el, binding) { //el代表此DOM元素,binding.value接收传递过来的参数el.style.color = binding.value //给此DOM元素设置文字颜色},update(el, binding) { //使用此指令的DOM更新就执行此方法el.style.color = binding.value}
})

        所有的.vue文件都可直接使用

<!-- 传参为字符串" '颜色值' " 或 "变量" -->
<p v-Color="'red'" >修改文字颜色</p>

注意点: inserted方法 - 指令所在标签, 被插入到网页上触发(一次)
                 update方法 - 指令对应数据/标签更新时, 此方法执行,只要更新就触发 

                el参数为使用此自定义指令的DOM元素

                binding参数用来接收传的值,binging.value就是具体值

二、自定义指令处理图片加载失败(碎图)

        1、在main.js中注册自定义指令,接收传递的值

Vue.directive('imgerror', {inserted(el, bindings) {el.onerror = function() { //当图片有地址 但是地址没有加载成功的时候 会报错 会触发图片的一个事件 => onerrorel.src = bindings.value //加载失败, 给一张默认图展示}    }    
})

        2、组件中使用自定义指令值处理

        imgDefault1为用户可能出错的图,

        imgDefault为正确的图,当用户图地址加载失败时,使用这个默认图,

        img1为本地的图片,当用户没有图片数据,或数据为空时,加载此默认图

<!--v-imgerror指令传值加载失败时的图,:src逻辑与之后的img1为没有图片数据时加载的默认图   -->
<img v-imgerror="imgDefault" :src="imgDefault1 || img1" alt="">

        补充:组件内直接使用图片方式                

<script>
import defaultImg from '图片路径' //第二种导入
export default{data(){return{img1: require('图片路径'), //第一种方式defaultImg:defaultImg  //第二种}}
}
</script>
http://www.lryc.cn/news/2762.html

相关文章:

  • 加盟管理系统挑选法则,看完不怕被坑!
  • alertmanager笔记
  • Android Jetpack组件之WorkManager后台任务管理的介绍与使用(二)
  • 【MySQL】第十七部分 约束
  • java ssm集装箱码头TOS系统调度模块的设计与实现
  • MS14-064(OLE远程代码执行漏洞复现)
  • 【C++深陷】之shared_ptr
  • SpringMVC中遇到的错误
  • 姿态估计端到端新方案 | DirectMHP:用于全范围角度2D多人头部姿势估计
  • jvm学习的核心(五)---垃圾回收算法和常见垃圾回收器
  • 亿级高并发电商项目-- 实战篇 --万达商城项目 二(Zookeeper、Docker、Dubbo-Admin等搭建工作
  • 【C#基础】 C# 数据类型总结
  • 格子玻尔兹曼法介绍
  • 活动星投票在时间的河流上造园分组怎么设置如何进行分组报名
  • c#小笔记本-基础
  • DamiCMS SQL注入分析
  • 图傅里叶变换的推导和理解
  • Java八股文(Java面试题)
  • java ssm idea高校图书借阅管理系统设计2z87z
  • 电脑重装系统注册表恢复方法
  • 信道建模(大尺度、小尺度、莱斯衰落、瑞利衰落、莱斯信道、瑞利信道)
  • 2022年12月电子学会Python等级考试试卷(四级)答案解析
  • 通过实例告诉你lua中ipairs到底是怎么遍历的!
  • Axios异步请求 json格式
  • Postgresql源码(100)Portal与事务的关系(顶层事务与子事务)
  • Java、JSP企业快信系统的设计与实现
  • 1.2(完结)C语言进阶易忘点速记
  • 雅思经验(十一)
  • C++中的智能指针
  • LSTM已死,Transformer当立(LSTM is dead. Long Live Transformers! ):下