詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖
一、自定義指令
vue中除v-model、v-show等內(nèi)置指令之外,還允許注冊(cè)自定義指令,獲取DOM元素,擴(kuò)展額外的功能。
1、局部注冊(cè)和使用
注冊(cè)在組件內(nèi)的script內(nèi)的directives內(nèi)
export default {
directives:{
focus:{ //自定義指令名
inserted(el){ //el就是使用此指令的DOM元素,此處el指這個(gè)input框
el.focus() //此el對(duì)應(yīng)的DOM元素自動(dòng)獲取焦點(diǎn)
}
}
}
};使用時(shí),v-自定義指令名即可
<input type="text" v-focus>
2、全局注冊(cè)和使用
在main.js用 Vue.directive()方法來(lái)進(jìn)行注冊(cè), 以后隨便哪個(gè).vue文件里都可以直接用v-fofo指令
Vue.directive('Color', {
inserted(el, binding) { //el代表此DOM元素,binding.value接收傳遞過來(lái)的參數(shù)
el.style.color = binding.value //給此DOM元素設(shè)置文字顏色
},
update(el, binding) { //使用此指令的DOM更新就執(zhí)行此方法
el.style.color = binding.value
}
})所有的.vue文件都可直接使用
<!-- 傳參為字符串" '顏色值' " 或 "變量" --> <p v-Color="'red'" >修改文字顏色</p>
注意點(diǎn):
- inserted方法 - 指令所在標(biāo)簽, 插入到網(wǎng)頁(yè)上觸發(fā)(一次)
- update方法 - 指令對(duì)應(yīng)數(shù)據(jù)/標(biāo)簽更新時(shí), 此方法執(zhí)行,只要更新就觸發(fā)
- el參數(shù)為使用此自定義指令的DOM元素
- binding參數(shù)用來(lái)接收傳的值,binging.value就是具體值
二、自定義指令處理圖片加載失敗(碎圖)
1、在main.js中注冊(cè)自定義指令,接收傳遞的值
Vue.directive('imgerror', {
inserted(el, bindings) {
el.onerror = function() { //當(dāng)圖片有地址 但是地址沒有加載成功的時(shí)候 會(huì)報(bào)錯(cuò) 會(huì)觸發(fā)圖片的一個(gè)事件 => onerror
el.src = bindings.value //加載失敗, 給一張默認(rèn)圖展示
}
}
})2、組件中使用自定義指令值處理,
imgDefault1為用戶可能出錯(cuò)的圖,
imgDefault為正確的圖,當(dāng)用戶圖地址加載失敗時(shí),使用這個(gè)默認(rèn)圖,
img1為本地的圖片,當(dāng)用戶沒有圖片數(shù)據(jù),或數(shù)據(jù)為空時(shí),加載此默認(rèn)圖
<!--v-imgerror指令傳值加載失敗時(shí)的圖,:src邏輯與之后的img1為沒有圖片數(shù)據(jù)時(shí)加載的默認(rèn)圖 --> <img v-imgerror="imgDefault" :src="imgDefault1 || img1" alt="">
補(bǔ)充:組件內(nèi)直接使用圖片方式
<script>
import defaultImg from '圖片路徑' //第二種導(dǎo)入
export default{
data(){
return{
img1: require('圖片路徑'), //第一種方式
defaultImg:defaultImg //第二種
}
}
}
</script>到此這篇關(guān)于詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖的文章就介紹到這了,更多相關(guān)Vue自定義指令 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue+Node實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳
文件上傳在很多項(xiàng)目中都用的到,如果是幾M的很快就傳送完畢,如果是大文件呢?本文將利用Vue+Node實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳,感興趣的可以了解一下2022-04-04
Vue腳手架配置代理服務(wù)器的兩種方式(小結(jié))
本文主要介紹了Vue腳手架配置代理服務(wù)器的兩種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
vue中el-tree?橫向滾動(dòng)條的實(shí)現(xiàn)
本文詳細(xì)介紹了在Vue框架中使用el-tree組件創(chuàng)建橫向滾動(dòng)條的方法,通過代碼示例和步驟說明,幫助開發(fā)者理解和實(shí)現(xiàn)橫向滾動(dòng)功能,感興趣的可以了解一下2024-09-09
Vue中textarea自適應(yīng)高度方案的實(shí)現(xiàn)
本文主要介紹了Vue中textarea自適應(yīng)高度方案的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
vuejs前后端數(shù)據(jù)交互之從后端請(qǐng)求數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇vuejs前后端數(shù)據(jù)交互之從后端請(qǐng)求數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-08-08
Vue+Flask實(shí)現(xiàn)簡(jiǎn)單的登錄驗(yàn)證跳轉(zhuǎn)的示例代碼
本篇文章主要介紹了Vue+Flask實(shí)現(xiàn)簡(jiǎn)單的登錄驗(yàn)證跳轉(zhuǎn)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-01-01
vue3-treeselect數(shù)據(jù)綁定失敗的解決方案
這篇文章主要介紹了vue3-treeselect數(shù)據(jù)綁定失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
vue+echarts實(shí)現(xiàn)動(dòng)態(tài)折線圖的方法與注意
這篇文章主要給大家介紹了關(guān)于vue+echarts實(shí)現(xiàn)動(dòng)態(tài)折線圖的方法與注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
vue中對(duì)監(jiān)聽esc事件和退出全屏問題的解決方案
這篇文章主要介紹了vue中對(duì)監(jiān)聽esc事件和退出全屏問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

