主要有:参数传递、localstorage传递、全局变量传递和页面对象传递等。
最常见的是参数传递,也就是在地址后面加上参数,然后在onload函数里面获取参数。
localstorage传递,就是把需要传递的参数保存到本地,在需要获取的页面当中获取保存的值,并且可以在不需要的时候删除。
全局变量传递,就是在页面当中改变app全局的某些变量,并且在需要获取的页面当中获取全局变量的值。
页面对象传递,就是获取当前的页面对象数组,找到相应的页面,并且执行该页面的方法进行直接赋值,实现传递参数的目的。
js ---------- JavaScrip文件
json -------- 项目配置文件,负责窗口颜色等等
wxml ------- 类似HTML文件
wxss ------- 类似CSS文件
在根目录下用app来命名的这四中类型的文件,就是程序入口文件。
appjson
必须要有这个文件,如果没有这个文件,IDE会报错,因为微信框架把这个作为配置文件入口,
你只需创建这个文件,里面写个大括号就行
以后我们会在这里对整个小程序的全局配置。记录了页面组成,配置小程序的窗口 背景色,配置导航条样式,配置默认标题。
appjs
必须要有这个文件,没有也是会报错!但是这个文件创建一下就行 什么都不需要写
以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。
appwxss
这个文件不是必须的。因为它只是个全局CSS样式文件
appwxml
这个也不是必须的,而且这个并不是指主界面哦~因为小程序的主页面是靠在JSON文件中配置来决定的
有了这两个文件你运行程序,IDE就不会报错了,也意味着这是最简单的微信小程序
{
appjson
appjs
}
注意,这里的session不是小程序维护的那个通过wxlogin()方法维护的session,而是我们自己的服务端的session。
由于正常情况下,客户端向服务端发起请求时,session信息是存放在cookie中以请求头的方式带回给服务端的,而请求头中具体的信息就是session的id,如下图所示
标红的就是我们需要在请求时携带返回给服务端的请求头 所以我们需要的就是这个JESSIONID的值了。刚好,微信小程序也提供了对请求头的支持。
解决办法:1、在用户登录时,服务端将用户的sessionId返回。
2、小程序保存sessionId,在之后的每次请求中在请求头中携带sessionId
服务端关键代码:
获取sessionId的方法,只要获得request对象就可以轻松获取到了
Sting sessionId = requestgetSession()getId();
把sessionId返回
//登录时的业务代码responsegetWriterwrite(sessionId); //把sessionId返回给前台
小程序端登录后,把sessionId存入全局变量,appjs中是个存放全局变量的好地方。
//登录后的逻辑处理
getApp()globalDataheaderCookie = 'JSESSIONID=' + _datasessionId;
appjs中代码
globalData:{
header:{'Cookie': ''} //这里还可以加入其它需要的请求头,比如'x-requested-with': 'XML>
小程序端请求时带上sessionId
var header = getApp()globalDataheader; //获取appjs中的请求头
wxrequest({
url: "localhost:8080/xx/xx",
header: header, //请求时带上这个请求头
success:function(res){
}
}
建议封装自己的请求信息,处理 一些通用的逻辑。
const app = getApp();
Page({
onLoad() {
appglobalDatanum1 = thisdatanum3;
}
})
获取到小程序全局唯一的 App 实例。
解决办法 为复制一份this的指向到变量中,这样在函数执行过程中虽然this改变了,但是that还是指向之前的对象。
大家知道this是指当前对象,只是一个指针,真正的对象存放在堆内存中,this的指向在程序执行过程中会变化,因此如果需要在函数中使用全局数据需要合适地将this复制到变量中。
this作用域分析:
1在Page({})里面,this关键字指代Page({})整个对象
2因此可以通过this关键字访问或者重新设置Page({})里data的变量
3然而在loadData函数中使用了wxrequest({})API这个方法导致在wxrequest({})里没办法使用this来获取Page({})对象
4虽然在wxrequest({})里没法使用this获取Page({})对象,但是可以在wxrequest({})外面先把this存在某个变量中,所以就有了 var that =this 这个声明。此时that指代Page({})整个对象,这样子就可以在wxrequest({})里使用that访问或者重新设置Page({})里data的变量
以上就是关于小程序页面间有哪些传递数据的方法全部的内容,包括:小程序页面间有哪些传递数据的方法、小程序基本构成、微信小程序用户登录的全局变量是否有有效期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)