小程序中 that和this用法

小程序中 that和this用法,第1张

解决办法 为复制一份this的指向到变量中,这样在函数执行过程中虽然this改变了,但是that还是指向之前的对象

大家知道this是指当前对象,只是一个指针,真正的对象存放在堆内存中,this的指向在程序执行过程中会变化,因此如果需要在函数中使用全局数据需要合适地将this复制到变量中。

this作用域分析:

1.在Page({})里面,this关键字指代Page({})整个对象

2.因此可以通过this关键字访问或者重新设置Page({})里data的变量

3.然而在loadData函数中使用了wx.request({})API这个方法导致在wx.request({})里没办法使用this来获取Page({})对象

4.虽然在wx.request({})里没法使用this获取Page({})对象,但是可以在wx.request({})外面先把this存在某个变量中,所以就有了 var that =this 这个声明。此时that指代Page({})整个对象,这样子就可以在wx.request({})里使用that访问或者重新设置Page({})里data的变量

iOS数据监听很简单,比如登录成功之后首页、个人中心页等很多页面都需要更新数据,只需要首页和个人中心页注册通知,登录成功之后发送通知,首页和个人中心页就能接收到该通知,此时就可以更新数据及界面,退出登录同理。

小程序更新页面数据就比较费劲,之前我都是获取上级页面,然后调用上级页面自定义方法 loadNewData 方法来刷新上级页面数据。

这种方法说实话也挺好用的,但是只能更新 wx.navigateTo 打开的页面。

官方也有页面间通信方法 EventChannel ,同样只能和 wx.navigateTo 打开的页面进行通信。

今天遇到的需求是 tabbar 切换的页面更新首页列表数据,只能各种百度,最终也实现的功能。

在首页调用

在其他页面修改 reloadIndex 的值

小程序组件有 数据监听器 ,也实现了某个功能。

参考文章:

小程序实现数据监听

小程序如何在其他页面监听globalData中值的变化?

微信小程序设置简单的监听器


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11799532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存