由于项目需要,最近便在做 一个类似于美团的餐饮平台的的微信微信小程序 ,项目有十几个页面,那么页面间的传值被经常用到。在小程序中页面间的传值主要有使用全局变量和本地存储这两种方法,在这个项目中我采用的是全局变量的方法

项目中使用的地方

下图为用户下单页面,下单时要选择配送地址,点击配送地址后跳入选择地址页面。

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

此为用户选择地址后返回的下单页面。此时下单页面的“选择地址”变为了用户自己的地址,便已经是完成了页面间的传值

全局变量传值具体说明

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变完成了页面间的数值传递。

微信小程序中使用全局变量解决页面的传值问题的更多相关文章

  1. 微信小程序中 input组件影响页面样式的问题

    input组件有个默认的宽高,好像是不能清除的,在使用flex布局的时候,发现会影响到页面的布局,以为是flex布局的问题,改为float布局试了下也是同样的问题,试着把input标签换成别的标签,问 ...

  2. 一招解决微信小程序中的H5缓存问题

    一招解决微信小程序中的H5缓存问题1.问题描述开发过程中,为了更新代码方便,往往会在小程序中嵌入H5页面.但问题来了,小程序原生代码更新版本后,简单的从微信中删除或者代码强刷就可以解决缓存问题,但小程 ...

  3. 微信小程序中的app.js-清除缓存

    微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...

  4. 微信小程序中的循环遍历问题

    比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 ;i<;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口1 ...

  5. 微信小程序中this使用

    微信小程序中,在wx.request({});方法调用成功或者失败之后,有时候会需要获取页面初始化数据data的情况,这个时候,如果使用,this.data来获取,会出现获取不到的情况,调试页面也会报 ...

  6. 微信小程序中this关键字使用技巧

    转自:https://blog.csdn.net/qq_33956478/article/details/81348453 微信小程序中,在wx.request({});方法调用成功或者失败之后,有时 ...

  7. 微信小程序中登录操作-----与-----引用

    login.wxml <view> <!-- <image src="./88.png"></image> --> # 在当前目录下 ...

  8. WeChat-SmallProgram:微信小程序中使用Async-await方法异步请求变为同步请求

    微信小程序中有些 Api 是异步的,无法直接进行同步处理.例如:wx.request.wx.showToast.wx.showLoading 等.如果需要同步处理,可以使用如下方法: 提示:Async ...

  9. 在微信小程序中使用富文本转化插件wxParse

    在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片.文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个 ...

随机推荐

  1. android 代码里设置控件属性

    设置字体大小: setTextSize(TypedValue.COMPLEX_UNIT_PX,22); //22像素 setTextSize(TypedValue.COMPLEX_UNIT_SP,22 ...

  2. 协程,yield,i多路复用,复习

    课程回顾: 线程池 队列:同一进程内的队列 先进先出 后进先出 优先级队列 线程池中的回调函数是谁在调用? 线程池中的回调函数是子线程调用的,和父线程没有关系 进程池中的会点函数是父进程调用的,和子进 ...

  3. Layui 表单赋值 编辑页面赋初值

    原文:https://blog.csdn.net/yulongxue/article/details/97924591 //编辑 if (id > 0) { $.post("/Hand ...

  4. ABP 从core降到级.net framework

    后台: Application层得先写接口 再写实现,不然 abp.services.app 这个里面就没有该service.并且service保留的接口,就是interface里面定义的接口. 文件 ...

  5. ESA2GJK1DH1K升级篇: 远程升级准备工作: 使用TCP客户端连接Web服务器实现http下载数据

    一,根目录建一个文件 二,使用浏览器访问 http://47.92.31.46:80/1.txt     或者  http://47.92.31.46/1.txt 三,使用TCP客户端访问文件内容 3 ...

  6. 请简述get请求和post请求的区别

    ①get比post快 ②get体积小,post可以无限大 ③get在浏览器退回时无害,post会再次请求 ④get的url参数可见,post不可见 ⑤get请求数据放在url,post数据放在http ...

  7. 解决github release下载慢/下载失败的问题

    在使用github时,有时作者会在release中提供编译好的程序,以https://github.com/AkikoZ/alfred-web-search-suggest为例,是一个alfred3的 ...

  8. Gamma阶段测试报告

    测试计划 Gamma阶段依然以场景测试为主.我们归纳了三条场景主线: 一.典型用户:查看 访问排名页面 / 搜索课程 查看课程页面 查看教师页面 为他人评论点赞或点踩 二.典型用户:评论 登录网站 搜 ...

  9. UE4命令行参数解析

    转自:https://blog.csdn.net/u012999985/article/details/53544389 一 .命令行参数简述命令行参数是一连串的关键字字符串,当运行可执行文件时可以通 ...

  10. 调用 Dll 中的函数时,出现栈(STACK)的清除问题 -> 故障模块名称: StackHash_0a9e

    在一个名为 test.dll 文件中,有一个 Max() 函数的定义是: #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) __std ...