最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中錯(cuò)誤圖片的處理的實(shí)現(xiàn)代碼

 更新時(shí)間:2019年11月07日 08:28:08   作者:一步一步向上爬  
這篇文章主要介紹了Vue中錯(cuò)誤圖片的處理的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在一個(gè)Vue的PC項(xiàng)目中,要求給錯(cuò)誤圖片不要讓它顯示丑陋的圖片,就要給圖片寫(xiě)一個(gè)失敗后的默認(rèn)圖片,

在這里寫(xiě)了兩種方法,

第一種方法,也就是百度到的最多的代碼,就是給一張圖片一個(gè)默認(rèn)值。

第二種問(wèn)題,如果頁(yè)面中有很多地方都存在這個(gè)東西,那么在不同的頁(yè)面中寫(xiě)很對(duì)是很麻煩的。

就使用到了VUe的指令。

這里分為了兩種情況, 一種是直接加載默認(rèn)圖片,等圖片加載完成之后再使用加載完成的圖片 。

代碼如下

// 如果自定義指令多的話,再重新開(kāi)啟一個(gè)文件專門(mén)寫(xiě)自定義指令 太亂了
//全局注冊(cè)自定義指令,用于判斷當(dāng)前圖片是否能夠加載成功,可以加載成功則賦值為img的src屬性,否則使用默認(rèn)圖片
//指令名稱為:real-img
// 通用錯(cuò)誤圖片的處理方法,或者也可以懶加載的樣子
Vue.directive('real-img', async function (el, binding) {
 let imgURL = binding.value;//獲取圖片地址
 if (imgURL) {
  let exist = await imageIsExist(imgURL);
  if (exist) {
   el.setAttribute('src', imgURL);
  }
 }
});

/**
* 檢測(cè)圖片是否存在
* @param url
*/
let imageIsExist = function (url) {
 return new Promise((resolve) => {
  var img = new Image();
  img.onload = function () {
   if (this.complete == true) {
    console.log('資源加載');
    resolve(true);
    img = null;
   }
  }
  img.onerror = function () {
   console.log('資源error', img);
   resolve(false);
   img = null;
  }
  img.src = url;
 })
};

使用方式

<div class="appd_d_ch_logo">
<img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="">
</div>

第二種是直接加載圖片,等到加載失敗的時(shí)候使用默認(rèn)圖。

/**
* 檢測(cè)圖片是否存在
* @param url
*/
let imageIsExist = function (url) {
 return new Promise((resolve) => {
  var img = new Image();
  img.onload = function () {
   if (this.complete == true) {
    console.log('資源加載');
    resolve(true);
    img = null;
   }
  }
  img.onerror = function () {
   console.log('資源error', img);
   resolve(false);
   img = null;
  }
  img.src = url;
 })
};



// 單獨(dú)作用于應(yīng)用模塊的管理
// 傳的是錯(cuò)誤的圖片
Vue.directive('err-img', async function (el, binding) {
 let imgURL = binding.value;//獲取圖片地址
 let realURL = el.src;
 if (imgURL) {
  let exist = await imageIsExist(realURL);
  if (!exist) {
   el.setAttribute('src', imgURL);
  }
 }
});

Vue文件中使用方式如下

<div class="appd_d_ch_logo">
<img src="../../assets/img/error/app_d.png" v-real-img="appDetail.icon" alt="">
</div>

很久了學(xué)習(xí)一點(diǎn)新東西還是感覺(jué)挺高興的,Vue指令很多人都見(jiàn)過(guò),但是到了用的時(shí)候總是沒(méi)想到,還是百度看到改造了一點(diǎn)點(diǎn)。

一段js代碼不需要引入在所有的頁(yè)面中使用很容易的辦到,可以把這一段js代碼放到Vue.prototype上面。

之前一直在想這個(gè)問(wèn)題,有什么方式可以讓所有的代碼都可以使用一段函數(shù)或者是什么的,看到了指令,還是要多看看文檔,只有到了用的時(shí)候才可能想到自己曾經(jīng)看到過(guò)這么一段話,再重新翻看文檔使用。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

富源县| 许昌市| 广南县| 临邑县| 广饶县| 湟源县| 玛多县| 南部县| 如皋市| 达拉特旗| 三江| 磐安县| 鸡西市| 瑞安市| 连州市| 忻城县| 雅江县| 沙湾县| 明水县| 渭南市| 吉木萨尔县| 苏州市| 九江县| 乐陵市| 巴东县| 闵行区| 广平县| 乌鲁木齐市| 安西县| 唐海县| 沅陵县| 中山市| 朔州市| 白水县| 如东县| 阳东县| 龙游县| 平远县| 山阳县| 东乌| 新余市|