解决办法 为复制一份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的变量
官方
先看一下官方对于 this.data 和 this.setData({}) 的定义与用法
知识乱伍点
this.data 是用来获取页面data对象,仅会改变数据,无法改变页面的状态凳陪尺,可能会造成数据不一致;
this.setData({}) 是用来修改数据,不仅会改变数据,而且还会改变视图;
问题
实际自己在学习过程中,遇到一个问题,下拉刷新的方法当中,用 this.data 与 this.setData({}) ,在数据显示上并没有什么不同,学习的视频中,授课老师用的是this.data,这个地方我自己也没有搞清楚是为什么
*** 作效果:
this.data
this.setData({})
可以看出来,两者使用并没有什么明显的区别。
总结
实际使用当中按照上面 知识点 部分加粗部分去执行,肯定是没有错的,涉及到页面数据更新的,使用**this.setData({}) **,在js中枣高使用data数据时使用****this.data.属性 。****
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)