• 媒体品牌
    爱范儿
    关注明日产品的数字潮牌
    APPSO
    先进工具,先知先行,AIGC 的灵感指南
    董车会
    造车新时代,明日出行家
    玩物志
    探索城市新生活方式,做你的明日生活指南
  • 知晓云
  • 制糖工厂
    扫描小程序码,了解更多

开发 | 如何在小程序页面之间,传递数据和变量?

小程序

2017-04-27 13:10

文 | Angeladaddy

最近组里开发小程序,遇到了一个困扰前端很长时间的话题:页面之间,如何传递数据和变量?

刚开始,我们选择使用路径传参解决。但是众所周知,各浏览器 HTTP Get 请求 URL 最大长度并不相同,大部分浏览器只能接受 7000 个字符的数据。

所以,我们觉得这个方式并不靠谱。

研究了一下官网,发现有两种方式可以「比较优雅」地完成这个任务。

使用全局变量

在项目 app.js 中定义 globalData(全局变量)。

App({
 globalData:{
   userInfo:'angeladaddy'
  }
});

在需要的地方,我们可以随意调用这个全局变量。

getGlobalVar:function(){
  var that=this;
  that.setData({
    globalvar_str:JSON.stringify(getApp().globalData)
  }) 
}

当然,赋值也是没问题的。

onLoad:function(options){
 getApp().globalData.userInfo+=' is an awesome man';
},

来试试效果:

使用模板

在官方文档中,模板的使用需要先定义一个模板,要用到 name 属性。

<template name="msgItem">
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

接着,使用模板和 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入。比如这样:

<template is="msgItem" data="{{...item}}"/>

item 赋值,以显示模板数据。

Page({
data: {
 item: {
   index: 0,
   msg: 'this is a template',
   time: '2016-09-15'
 }
}
})

这样就「duang」地一下,解决了页面传值问题。

另外,既然小程序可以使用 ES6 的所有特性,那么那个 var that=this 又是什么鬼?为何不能用箭头函数解决作用域问题?大家可以自行尝试一下。

本文由知晓程序授权转载,关注微信号 zxcx0101,在微信后台回复「带参二维码」,获取生成小程序带参二维码教程。

zxcx_0208

登录,参与讨论前请先登录

评论在审核通过后将对所有人可见

正在加载中

小程序商店 minapp.com,一扫即用的小程序大全。微信公众号「知晓程序」,做中国最好的小程序报道。

本篇来自栏目

解锁订阅模式,获得更多专属优质内容