微信小程序的坑

发布时间:2019-08-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了微信小程序的坑脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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
}@H_777_45@

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)

脚本宝典总结

以上是脚本宝典为你收集整理的微信小程序的坑全部内容,希望文章能够帮你解决微信小程序的坑所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。