微信小程序中使用全局变量解决页面的传值问题
由于项目需要,最近便在做 一个类似于美团的餐饮平台的的微信微信小程序 ,项目有十几个页面,那么页面间的传值被经常用到。在小程序中页面间的传值主要有使用全局变量和本地存储这两种方法,在这个项目中我采用的是全局变量的方法
项目中使用的地方
下图为用户下单页面,下单时要选择配送地址,点击配送地址后跳入选择地址页面。

下图为用户选择地址页面,用户点击选择地址选项进行选择后再点击返回按钮回到用户下单页面

此为用户选择地址后返回的下单页面。此时下单页面的“选择地址”变为了用户自己的地址,便已经是完成了页面间的传值
全局变量传值具体说明
1.全局变量的定义

在app.js中的appData下定义userAddress设其值为空用来存储用户的地址信息
App({
/**
* 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
*/
onLaunch: function () {
},
/**
* 当小程序启动,或从后台进入前台显示,会触发 onShow
*/
onShow: function (options) {
},
/**
* 当小程序从前台进入后台,会触发 onHide
*/
onHide: function () {
},
/**
* 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
*/
onError: function (msg) {
},
appData:{
userinfo:null,
appstore_id:null,
userAddress:null,
}
})
2.用户选择地址页面内容
location.html
<image src="{{item.image}}" mode="widthFix" bindtap="toCleanOrder" data-index="{{item.index}}" data-id="{{item.id}}" data-name="{{item.name}}" data-tel="{{item.tel}}" data-sex="{{item.sex}}" data-address_detail="{{item.address_detail}}" data-addre="{{item.addre}}" data-image="{{item.image}}"
data-address="{{item.address}}" data-frequent_address="{{item.frequent_address}}" />
<view class="info">
<view class='info_up'>
<text>{{item.name}}</text>
<text>{{item.sex}}</text>
<text> {{item.tel}}</text>
<text>{{item.frequent_address}}</text>
</view>
<text>地址:{{item.address}}{{item.address_detail}}</text>
</view>
location.js
// 重新选择收获地址
toCleanOrder: function(e) {
var that = this;
console.log(e);
for (var i = 0; i < that.data.add_rece_address_list.length; i++) {
if (i == e.currentTarget.dataset.index) {
li[e.currentTarget.dataset.index].image = "../image/check.png"
} else {
li[i].image = "../image/uncheck.png"
}
}
that.setData({
add_rece_address_list: li
})
app.appData.userAddress = {
address: e.currentTarget.dataset.address,
address_detail: e.currentTarget.dataset.address_detail,
frequent_address: e.currentTarget.dataset.frequent_address,
index: e.currentTarget.dataset.index,
name: e.currentTarget.dataset.name,
sex: e.currentTarget.dataset.sex,
tel: e.currentTarget.dataset.tel,
};
},
在此页面中将后台传过来的地址信息定义到赋值给address、 address_detail、frequent_address、 index、name、sex、tel、
再把这些数据封装到app.appData.userAddress里面供另一个页面使用
3.用户下单页面选择地址块内容
payed.html
<view class='adress' bindtap='adressClick'>
<image src="../../image/map2.png"></image>
<view wx:if="{{select_address==false}}">选择地址</view>
<view wx:if="{{select_address==true}}">
<view>{{payed_address}}{{payed_address_detail}}</view>
<view>{{payed_name}}-{{payed_sex}}-{{payed_tel}}</view>
</view>
</view>
<view class="launch" style="border:none">
<image src="../../image/map2.png"></image>
<view>立即送出</view>
</view>
payed.js
/**
* 页面的初始数据
*/
data: {
isShow: true,
currentTab: 0,
select_address:null,
payed_address:null,
payed_address_detail:null,
payed_name:null,
payed_sex:null,
payed_tel:null ,
},
/*
* 生命周期函数--监听页面显示
*/
onShow: function() {
if (app.appData.userAddress == null) {
this.setData({ select_address: false })
} else {
this.setData({
select_address: true,
payed_address: app.appData.userAddress.address,
payed_address_detail: app.appData.userAddress.address_detail,
payed_name: app.appData.userAddress.name,
payed_sex: app.appData.userAddress.sex,
payed_tel: app.appData.userAddress.tel,
})
}
},
/*
*地址点击函数
*/
adressClick: function(e) {
wx.navigateTo({
url: '../../location/location',
})
}
在此页面中将上个页面封装到app.appData.userAddress中里面的值赋给此页面定义的 payed_address,payed_address_detail,payed_name,payed_sex, payed_tel变完成了页面间的数值传递。
微信小程序中使用全局变量解决页面的传值问题的更多相关文章
- 微信小程序中 input组件影响页面样式的问题
input组件有个默认的宽高,好像是不能清除的,在使用flex布局的时候,发现会影响到页面的布局,以为是flex布局的问题,改为float布局试了下也是同样的问题,试着把input标签换成别的标签,问 ...
- 一招解决微信小程序中的H5缓存问题
一招解决微信小程序中的H5缓存问题1.问题描述开发过程中,为了更新代码方便,往往会在小程序中嵌入H5页面.但问题来了,小程序原生代码更新版本后,简单的从微信中删除或者代码强刷就可以解决缓存问题,但小程 ...
- 微信小程序中的app.js-清除缓存
微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...
- 微信小程序中的循环遍历问题
比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 ;i<;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口1 ...
- 微信小程序中this使用
微信小程序中,在wx.request({});方法调用成功或者失败之后,有时候会需要获取页面初始化数据data的情况,这个时候,如果使用,this.data来获取,会出现获取不到的情况,调试页面也会报 ...
- 微信小程序中this关键字使用技巧
转自:https://blog.csdn.net/qq_33956478/article/details/81348453 微信小程序中,在wx.request({});方法调用成功或者失败之后,有时 ...
- 微信小程序中登录操作-----与-----引用
login.wxml <view> <!-- <image src="./88.png"></image> --> # 在当前目录下 ...
- WeChat-SmallProgram:微信小程序中使用Async-await方法异步请求变为同步请求
微信小程序中有些 Api 是异步的,无法直接进行同步处理.例如:wx.request.wx.showToast.wx.showLoading 等.如果需要同步处理,可以使用如下方法: 提示:Async ...
- 在微信小程序中使用富文本转化插件wxParse
在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片.文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个 ...
随机推荐
- 201871010126 王亚涛 《面向对象程序设计(java)》 第四周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 数据库备份 DBS(Database Backup),知识点
资料 网址 什么是DBS https://help.aliyun.com/document_detail/59133.html?spm=5176.13685554.103.6.3fa463f9CDwW ...
- nginx在linux下安装(源码编译)
下载 http://nginx.org/en/download.html 安装 安装依赖 yum -y install gcc gcc-c++ zlib zlib-devel pcre-devel o ...
- 装ubuntu的坑
装ubuntu安装盘的U盘,在BOOT中会出现两种载入方式,切记不要用UEFI方式打开,否则安装ubuntu会在最后卡在GRUB的安装上面,然后失败.
- Excel 使用小技巧
连接符,符号是&,输入方式为按住Shift+7“&”在连接单元格内容时,不管单元格格式为文本还是数值,都能连接,但得到的结果都是文本型数字. ="update tb_reco ...
- arduino驱动dbs820温度
https://blog.csdn.net/Naisu_kun/article/details/88420357 超过温度报警 // #include <OneWire.h> //可以不引 ...
- LeetCode 1150. Check If a Number Is Majority Element in a Sorted Array
原题链接在这里:https://leetcode.com/problems/check-if-a-number-is-majority-element-in-a-sorted-array/ 题目: G ...
- IIS 加载字体
原文:https://blog.csdn.net/prospertu/article/details/72852500 <system.webServer> <staticConte ...
- fping 命令说明
参数: -a 表示只在输出报告⾥列出当前存活的IP -d 解析主机名 -f 参数表示读⼊这个文件 -s 显示汇总信息 -g 指定⽹网段
- 微信小程序云开发不完全指北
微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...