记录写项目时遇到的问题——小程序篇

本文解决小程序中图片更新不显示、背景图加载失败及Label组件失效等问题,提供多种解决方案,包括添加版本号、使用base64编码及JS绑定事件。

小程序更换图片后,图片名称和地址都不变,但页面显示更换前的图片

项目场景:

上传单据图片


问题描述:

新增一个单据图片的上传功能,图片可来自相机或相册
没有图片的状态如下:
在这里插入图片描述
现在出现,当有图片的时候点击图片更换图片,会出现页面仍然显示更换前的图片


原因分析:

这是开发工具上编译的效果,同时还有个原因是,因为图片只是内容覆盖,但是图片名字和图片地址不变,小程序会默认从本地缓存中读取,以为你的数据并没有发生改变


解决方案:

方案一

给图片地址增加版本号或时间戳或者随机数
例如:
“https://xxx.com/xx/x/demo.jpg?v=202009011926”

// 获取时间戳
getTimeStamp: function() { 
  var TimeStamp = Math.round((new Date()).getTime() / 1000) + 28800;
  return TimeStamp;
}
方案二

修改图片名称

小程序加载背景图片失败

项目场景:

登录界面背景图


问题描述:

背景图无法显示仍为纯色背景


原因分析:

小程序不支持css背景图片为本地图片,可使用网络图片或者利用 base64 编码的图片代替。

图片在线 base64 编码转换工具

那么什么是 base64 编码呢?
base64 编码可用于在HTTP环境下传递较长的标识信息。
base64 百度百科——这里面除了解释 base64 编码的原理外,还用不同的计算机语言去实现 base64 编码

将一张图片的数据编码成一个字符串,然后我们可以使用这个字符串来代替本地图片的路径(地址)。这个字符串就是我们想要的图片的 base64 编码


解决方案:

方案一

通过 base64 图片在线转换工具将本地图片转换成 base64 编码,直接在 css 上需要设置背景图片的地方 background: url(‘转换好的字符串’) no-repeat center;

方案二

将本地图片地址转换成网络图片地址,说来也简单。所有可以上传图片的网页都能做到这点。
比如:csdn 写博客的编辑器里有一个上传图片的按钮
在这里插入图片描述
打开之后,如下图所示
在这里插入图片描述
点击上传一张本地图片,在下图划红线的部分就是我们需要的网络图片地址,可以直接复制使用
在这里插入图片描述

小程序使用Label失效

项目场景:

制作一个登录页


问题描述:

登录页需要输入用户名和密码


原因分析:

在查完微信官方文档之后,发现原因是小程序的 label 组件目前未支持绑定 input 控件

在这里插入图片描述


解决方案:

方案一

使用 JS 绑定点击事件,通过 focus 属性去切换

index.wsml

<view data-value="password" bindtap="togetfocus">
	<text>密码</text>
	<input focus="{{isPassword}}" type="password" value="{{user.password}}" bindinput='userpassinput'></input>
</view>

index.js

togetfocus(ev){
	if(ev.currentTarget.dataset.value == 'username'){
		this.setData({
        	isUsername: true,
        	isPassword: false
      	})
    }else if(ev.currentTarget.dataset.value == 'password'){
		this.setData({
        	isUsername: false,
        	isPassword: true
      	})
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值