【小程序】小程序开发大大小小的坑
1. 文本是数字类型会在底部增加空白间距?
解决方式:添加全局文本格式:
font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif;
2.wss无法使用background-image属性:
解决方式:使用相对布局添加image控件充当背景
3.navigateTo无法跳转回带有tab的页面
解决方式:新版本的微信小程序使用了switchtab作为跳转的方法
4.在js文件的回调方法里面无法使用setData?
解决方式:当你使用了回调函数后,上下文环境已经改变,var that = this,使用自定义的变量来改变数据
5.page的js方法在那里写?
解决方式:在pages外面写,或者在外部写一个js方法,然后使用require引入
6.为什么我总是定位不到资源文件?
../,这个代表回退上一层,自己慢慢数
7.小程序的传值问题
传值分三种一种是点击事件,一种是跳转事件
点击事件,需要在wxml里面声明data-(变量名),然后在e-currentarget-dataset-(变量名)
跳转事件,在navigator的url后面补上变量名和对应的值,例如跳转到../../index/index,加上变量就是../../index/index?name=marco&sex=male
页面回调的传值有两种方式:1.现在是在通过app.js的全局来调用 2.获取上一个页面的page,通过page.setData来更新数据,不过,还是希望tx能够提供一种更优雅的方式吧
8.pages的取值问题
- data的值,需要在前面加上this.data.(变量名)
- 外部js里面的值,先导入js文件,var name = require(js url) 值为:name.value
9.target和currentarget的区别
用户进行点击事件,小程序会进行事件分发,先子控件,然后在分发到父控件
target是当前点击事件
currentarger是事件分发
10.小程序button的默认边框问题
因为button的css伪元素::after里面有一个border:1px solid rgba(0, 0, 0, 0.2),去掉就可以了
11.js里面的数据默认是64位的,所以自己小心
12.从网页里面获取到的数据可能是ISO或者其它类型的转码问题
实际上,一切都通常以内部的某种形式存储为Unicode,但不要进行。我假设你得到了标志性的”åäö”类型的字符串,因为你使用ISO-8859作为你的字符编码。有一个诀窍可以转换这些字符。针对ISO字符定义了用于编码和解码查询字符串的escape和unescape函数,而为UTF8字符定义了较新的encodeURIComponent和decodeURIComponent。
escape将扩展的ISO-8859-1字符(UTF代码点U + 0080-U + 00ff)编码为%xx(two-digit十六进制),而将U + 0100及以上的UTF码点编码为%uxxxx(%u,后跟four-digit十六进制)。例如, escape(“å”) == “%E5″和escape(“あ”) == “%u3042″。
encodeURIComponent percent-encodes将字符扩展为UTF8字节序列。例如,encodeURIComponent(“å”) == “%C3%A5″和encodeURIComponent(“あ”) == “%E3%81%82″。
所以你可以做:fixedstring = decodeURIComponent(escape(utfstring));
如果是发送请求的话,可以使用utfstring = unescape(encodeURIComponent(originalstring));
13.小程序尺寸单位问题
rpx:可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
rem:则是以640为设计
14,小程序遵循xhtml规范,html标签全部都是小写
小程序wxml在js传值的时候(即data-变量名的形式),变量名是不区分大小写的,可是js里面是区分大小写的,所以在wxml里面设置的变量,在js里面都以小写形式存在!然而在js传值wxml(即{{变量名}})的时候,是区分大小写的
15,小程序点击事件传递
点击事件的话,默认是会传递给上层的数据
所以,设置点击事件的时候,需要拦截阻止事件分发给下层布局,将longtap转成catchtap就可以了
16.小程序支付
微信小程序的appid和mch_id是相对的,签名的时候注意场景支付的不一样