微信小程序实例:image组件的binderror事件处理

微信公众平台关于image组件的讲解都挺详细的,至于在binderror错误事件处理上并没有详细说明。那么如果我们在获取网络图片出现404 nofound的情况下要怎么处理呢?如果是单张和循环内的某张图片出错的情况下又该如何处理呢?

首先,我们都知道html的img组件自带一个onerror图片出错事件处理机制,写法就如同js一样。语法如下:

<img src="xxx" onerror="this.src='./img/default.png'"/>  

但是,我尝试在小程序里的image组件也做这样的处理,却发现并不能实现,反而要提示APP-SERVICE-Engine错误信息。后来重新翻看文档,找到类似的事件处理binderror,文档支出可以通过event.detail打印出具体的出错信息,并没有给出出错后的具体解决方案。通过和前辈沟通得到的解决方案如下:

通过dataset属性将image组件的src变量值存入。binderror事件通过获取属性变量值改变data的数据。当然这个有个弊端,就是image组件的src是动态的值而不能是直接指向某张图片的情况下。

那么具体处理代码如下:
demo.wxml::
单张图片:

<image src="{{testImg}}" binderror="errImg" bindload="loadImg" data-err-img="testImg" />  

多张图片的情况:

<view class="bd-left-item" wx:for="{{classicArr}}">  
  <image src="{{item.img}}" class="item-img" binderror="errImg" data-err-img="classicArr[{{index}}].img" />  
  <view class="bd-left-item-bottom">  
    <view class="title">{{item.title}}</view>  
    <view class="addr">{{item.addr}}</view>  
    <view class="tag" wx:for-items="{{item.tags}}" wx:for-item="tag">{{tag}}</view>  
  </view>  
</view>  

demo.js::

Page( {  
  data: {  
    classicArr: [  
      {  
        img: "../../img/01.png",  
        title: "现实世界的桃花源",  
        addr: "福建省南安市东田镇香草世界",  
        tags: ["摄影", "PS"]  
      },  
      {  
        img: "../../img/default.png",  
        title: "南普陀",  
        addr: "福建省厦门市南普陀",  
        tags: ["摄影1", "PS"]  
      },  
      {  
        img: "../../img/default.png",  
        title: "武夷山",  
        addr: "福建省....",  
        tags: ["摄影", "PS2"]  
      }  
    ],  
    testImg: "../img/01.png"  
  },  
  errImg: function(e){  
    var _errImg=e.target.dataset.errImg;  
    var _objImg="'"+_errImg+"'";  
    var _errObj={};  
    _errObj[_errImg]="../../img/01.png";  
    console.log( e.detail.errMsg+"----"+ _errObj[_errImg] + "----" +_objImg );  
    this.setData(_errObj);//注意这里的赋值方式...  
  }  
});  

去掉dataset属性,展示的是一片空白



加入dataset属性后,结合binderror事件处理图片

但是这样存在一个情况就是每个页面都写这个程序不是很臃肿,那么我们考虑怎么把他写入到模块js文件里面呢?

解决方案::先把this对象传入到js函数里面,就可以直接修改外面的data数据了。具体函数如下:
commons.js::

//远程图片no found情况下指引  
function errImgFun(e, that){  
  var _errImg=e.target.dataset.errImg;  
  var _errObj={};  
  _errObj[_errImg]="../../img/01.png";  
  console.log( e.detail.errMsg+"----" + "----" +_errImg );  
  that.setData(_errObj);    
}  
module.exports = {  
  sayHello: sayHello,  
  errImgFun: errImgFun  
}  

index.js::

var comm=require('../../common/common.js');  
  
Page({  
  errImg: function(ev){  
    //需要访问当前页面的数据对象传递到其它页面上  
    var _that=this;  
    comm.errImgFun(ev, _that);  
  },  
})  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,039评论 25 707
  • 昨天看了一下微信小程序官方文档,总结一下自己学习的个人心得. 首先从官方文档给的框架说起,微信小程序官方文档给出了...
    Mr大大大阅读 47,151评论 9 68
  • 一、制定合理的学习计划 1、制定的一般步骤:第一步是要分析现有的条件,即个人所处的具体环境和自身已经具备的条件;第...
    心羽海韵阅读 1,563评论 0 0
  • 有好几次输入了一段又一段的话,然后再一段一段的给清空。已经有好几年没有再写过东西了,也许印象最深的还是高中那会学校...
    张大大饼阅读 158评论 0 1
  • 苹果认为虽然电视成为各大企业的争夺重地,但由于更换周期短很难做到盈利,因此目前只在机顶盒、OTT盒子上开发了市场,...
    py_sama阅读 406评论 0 0