1

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'});

最后结果是

clipboard.png

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)


唯见长江天际流
827 声望11 粉丝

黄鹤楼送孟浩然之广陵