大概情况如下,我在页面文件中使用image标签显示图形验证码,如果看不清图形的话点击刷新图形验证码,如下代码所示:
<image ref="validateImg" :src="imgValidateCodeUrl" @tap="refreshImgValidateCode"></image>
refreshImgValidateCode为刷新图形验证码的方法,代码如下:
refreshImgValidateCode:function(){
console.log(this.$refs.validateImg);
this.$refs.validateImg.src = this.imgValidateCodeUrl + '?raw=' + new Date().getTime();
},
结果:在微信小程序中当点击图形验证码时,this.$refs.validateImg返回的是undefined,请问大家微信小程序中是如何解决该问题,是不是在微信小程序中$refs不能使用,如果不能使用有什么其他方式来实现同样效果,谢谢大家!
3 个回复
千岛偏舟 (作者)
感谢牛国辉提供得思路,原先的思路是获取image对象后去修改src属性的值从而达到了刷新图片的目的,但百度查了一下uni-app对$refs的使用有限制,实再没办法,只能利用vue的双向绑定的原理去修改用来赋值给src的变量imgValidateCodeUrl 来实现图片刷新。但感觉上不能获取html控件对象在开发上会带来不少的不便,以后只能具体问题具体解决了。
uni-app最近也是刚刚使用,东西虽好,但感觉坑很多不方便的地方也很多,除了对$refs使用限制,比如官方没有提供表单验证功能,虽然插件市场有提供但功能参差不齐,资料不全,需要花大量时间去试,另一个刚刚又发现一个问题,验证码在微信小程序能正常显示,在APP中显示不出来,看样子得继续折腾。
牛国辉
直接改变 imgValidateCodeUrl 即可,无需ref
千岛偏舟 (作者)
谢谢提供思路,我之前尝试过这种方式,不用ref,但没有效果:
<image :src="imgValidateCodeUrl" @click="this.src = this.src + '?'">
但没有效果,后来查了一下原因,对this关键字进行输出结果也是undefined,表示很无奈。
2020-01-10 09:42
3***@qq.com
我也觉得uniapp的设计理念不大方便,用起来不顺手的感觉...