1. switchtab和navigateBack
navigateBack是进行页面返回的操作,但无法传参数给上一个页面。他所提供的参数delta,其值是个number,其意义是返回第几层,如果大于当前层数则返回首页。
关于switchtab,navigateTo和redirecTo是无法到tab页面的,只有通过switchtab才能到tab页面。而如果tab页之前已经出现过,不会走onlad生命周期,只会走onShow,而且switchtab不支持通过querystring传参。
那么如果一个页面如果想返回到tab页面,参数只能通过写到本地内存中解决。
try {
wx.setStorageSync('key', 'value')
} catch (e) {
}
try {
var value = wx.getStorageSync('key')
if (value) {
// Do something with return value
}
} catch (e) {
// Do something when catch error
}
2. template
定义模版时,如果模版中用到图片资源,你可能会想使用当前template的相对路径去定位图片资源。如
<template name="aaa">
<image src="./images/bbb.png"></image>
</template>
这样写是有坑的,如一个使用该模版的文件,和图片资源的相对路径是这样
../images/bbb.png
那么在该文件中就无法展示该图片,会报404错误。
也就是template中的资源不是相对template的路径,而是相对使用该template的文件的路径。
3. setData
微信小程序中无法使用 es6的解构,那setData就很麻烦。简单方法可以这样:
this.setData({[`${aaa}.bb.cc`]:'ccc'});
没有表达式可以简单写
this.setData({'aaa.bb.cc':'ccc'});
左边是个表达式,相当于直接设置ccc,很方便。
如果要问存在'aaa.bb.cc'这个字段变量的话,怎么区分呢?答案是对象优先级会高于字符串。
data: {
a:{
b:{
c:'111'
}
},
'a.b.c': '333333'
},
然后设置
this.setData({'a.b.c':'22222'});
最后结果是
4. 屏蔽微信小程序分享
page对象移除onShareAppMessage函数
5. js设置小程序title
wx.setNavigationBarTitle({ title: '当前页面'})
6. app的onlaunch中getApp()是undefined
解决方法是在onshow中调用。
另一个问题是:android中移除该小程序的进程,globaldata中数据会消失。可能会说在app的onlaunch中设置到globaldata中,但如果该数据需要异步请求呢?可能出现,app的异步请求没返回,页面已经加载并使用globaldata中的数据,所以建议谨慎使用globaldata中的数据,这个和android中的application中存储数据的问题类同,进程被杀掉后,新打开的Application是新的,其中不会有旧数据。globaldata中的数据,也是在app中的,和android的application,一模一样的问题。
7. 打开微信的图片浏览
wx.previewImage(OBJECT)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。