收藏
评论

微信小程序开发常见问题(四)

知晓程序员,专注微信小程序开发的程序员!

一、小程序不同页面之间的传值方式

a、URL传值

这种方式最常用,比如:

wx.navigateTo({
 url: '../detail/detail?cid='+cid+'&access_token='+access_token
})

这里面直接通过跳转页面的URL进行传值,然后在另一个页面进行接收:

onLoad: function (opt) {
 console.log('cid =' + opt.cid);
 
console.log('access_token =' + opt.access_token);
}

这种传值方式只适合值比较少的时候使用,传值比较多的时候,还是建议写本地缓存~


b、本地缓存

小程序API提供了本地缓存数据的API,默认可以缓存10M的数据,如下:

wx.setStorageSync('checkin', checkin);

checkin是一个object,在需要的页面直接调用wx.getStorageSync即可获取,这样就解决了传值较少的问题了。


c、全局APP

其实还有第三种方式,就是全局APP变量。app.js和app.wxss中的代码都是全局生效的,所以我们可以利用这一点儿,在不同页面之间进行传值。

App({
 onLaunch: function () {
   
 },
 
globalData: {
   host: 'https://api-xcx-qunsou.weiyoubot.cn/xcx',
   
// 版本升级时这里的version加1并替换versionFeature的文案即可
   
version: 2,
   
versionFeature: '更新说明'
 
}
})

也可以在其他JS里面动态修改globalData,如getApp().globalData.host = 'XXX';


二、textarea的键盘BUG

有同学可能会遇到这个问题:show-confirm-bar='false'设置不生效,导致键盘还带有“完成”按钮,预期效果是没有“完成”button~

这个值如果要设置为true的话随便输入就可以了,但是如果是要设置false的话就需要设置变量或者留空:

show-confirm-bar=''   或者  show-confirm-bar='{{showConfirm}}'


三、小程序中如何生成分享小程序码

官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html

(微信小程序官方文档不支持搜索,这真是太TM坑人了~)


文档大家自己去看吧,我们需要注意以下几点:

1、通过该接口,仅能生成已发布的小程序的二维码。

2、可以在开发者工具预览时生成开发版的带参二维码。

3、接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用。

4、POST 参数需要转成 json 字符串,不支持 form 表单提交。

5、auto_color line_color 参数仅对小程序码生效。


《END》


欢迎交流小程序技术问题~

可以加我威信   mianhuabingbei

或者直接加群:


收藏

2 个评论

  • 郭玉峰 15811200580
    郭玉峰 15811200580
    2018-06-26

    你说的我都没用

    var pages = getCurrentPages(); // 当前页面  

    var beforePage = pages[pages.length - ]; // 前一个页面  

    这样不行吗  可以用前一个页面的任何东西


    2018-06-26
    赞同
    回复
  • 神经蛙
    神经蛙
    2018-05-09

    使用全局变量一直获取不到,不知道问题在哪


    在小程序app.js定义了全局变量,打印也正常,在index.js获取失败,报undefined错误是什么原因?


    2018-05-09
    赞同
    回复 2
    • 连胜
      连胜
      2018-05-14
      看你代码截图,像是用了wx.request去请求数据,再把数据赋值给app.js里面的product_list 这里异步请求要花费时间的,假设2秒之后返回,你在page的onReady里面去取,肯定是取不到值了。
      2018-05-14
      回复
    • 神经蛙
      神经蛙
      2018-05-21回复连胜
      谢谢啊,用了本地缓存来规避了。
      2018-05-21
      回复
登录 后发表内容