小程序开发过程中,不可避免要遇到不同页面之间数据通讯的问题,如判断是否登录等,现做出以下分类总结
购物车界面需要根据是否登录来区别显示,当没有登录时提醒去登录,登录后之间显示自己购物车里的商品列表
再 app.js 文件中定义全局变量 globalData, 如下:将用户信息存放在 userInfo 中
//app.js
App({
onLaunch: function () {
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
},
// 全局变量
globalData: {
userInfo: null
}
})
购物车界面获取全局变量userInfo 的值,判断用户是否登录
onLoad: function (options) {
var app = getApp();
if (app.globalData.userInfo === null){
this.setData({ "haveLogin": false});
}else {
this.setData({ "haveLogin": true});
}
},
登录界面,登录成功后,将用户信息保存到全局变量中
wx.request({
url: 'your url',
method: 'POST',
data: { "acount": acount, "aPWD": aPWD, "phone": acount, "pPWD": aPWD},
success: function(res) {
if(res.code === 1){
getAPP().globalData.userInfo = res.userInfo;
}
},
fail: function (err) {
console.log(err)
}
})
点击产品列表中的某一项,跳转到对应的产品详情页面
产品列表中要保证每一项都有个id,点击的时候获取id即可
toSomeone: function (event) {
wx.navigateTo({
url: 'some/some?id=' + event.target.id,
})
}
详情页获取传递来的数据:
onLoad: function (options) {
console.log(options)
},
*注: 如果传递参数是 json 数据,需要使用JSON.stringify,然后在后台逻辑之中使用JSON.parse序列化成对象使用,而且传递的数据有字节也有限制
我们在排版项目页面的时候,习惯将相同样式的模块拆分成一个模板,在需要用的时候,直接引用模板,这样就可以避免多次排版,同时还方便维护。
不知道怎么使用 template 的同学们, 可以看一下我的上一篇博文(小程序template使用方法),那里详细描述了如何使用template的方法,这里就不在赘述了。
<template is="good" data="{{data}}">template>
登录成功后将用户信息放入缓存,购物车获取显示用户数据
//缓存数据
wx.setStorage({
key: 'userInfo',
data: res.userInfo
})
getUsersInfo: function () {
//读取缓存登录
wx.getStorage({
key: 'userInfo',
success: function (res) {
this.userInfo = res.userInfo;
}
})
}
购物车中添加商品之后,直接保存到数据库中,然后购物车界面的产品显示,直接从数据库中获取数据。
//添加商品
addGoods: function (good) {
wx.request({
url: 'your url',
method: 'POST',
header: {
'content-type': 'application/json'
},
data: good,
success: function (res) {
this.setData({ "goodsList": res.data })
}
})
},
//获取数据
getGoodsList: function () {
wx.request({
url: 'your url',
method: 'GET',
success: function (res) {
this.getGoodsList();
}
})
}
本次总结就到这里了,觉得有用就在左上点个赞再走呗~~