微信小程序如何调用远程接口给全局数组赋值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计326个文字,预计阅读时间需要2分钟。
关键在于 `let that=this`,因为 `onLoad` 中的 `wx.request` 方法里,`this` 指的是 `wx.request` 的上下文。所以应该在 `onLoad` 时定义 `let that=this` 调用远程服务,然后序列化后,将 `obj` 的值赋给 `bookList` 初始值。
关键是 let that = this
因为在onLoad 的 wx.request方法里, this指的是 wx.request 的上下文, 所以应该是在 onLoad 的时候定义 let that = this
调用远程服务,序列化后,把obj赋值给bookList
最开始的报错代码如下:
Page({ data: { bookList: [] }, onLoad: function() { wx.request({ url: 'jiashubing.cn/wechat/book', header: { 'content-type': 'application/json' }, success(res) { var obj = JSON.parse(res.data) console.log(obj) this.setData({ bookList: obj }) } }) } })
报错为:
VM3293:1 thirdScriptError Cannot read property 'setData' of null;at pages/index/index onLoad function;at api request success callback function TypeError: Cannot read property 'setData' of null
报错原因是this 指向有问题,得在onload的时保存实例指向,let that = this,下面全用that,this指向永远值得是自己的上下文环境
正确代码如下:
Page({ data: { bookList: [] }, onLoad: function() { let that = this wx.request({ url: 'jiashubing.cn/wechat/book', header: { 'content-type': 'application/json' }, success(res) { var obj = JSON.parse(res.data) console.log(obj) that.setData({ bookList: obj }) } }) } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计326个文字,预计阅读时间需要2分钟。
关键在于 `let that=this`,因为 `onLoad` 中的 `wx.request` 方法里,`this` 指的是 `wx.request` 的上下文。所以应该在 `onLoad` 时定义 `let that=this` 调用远程服务,然后序列化后,将 `obj` 的值赋给 `bookList` 初始值。
关键是 let that = this
因为在onLoad 的 wx.request方法里, this指的是 wx.request 的上下文, 所以应该是在 onLoad 的时候定义 let that = this
调用远程服务,序列化后,把obj赋值给bookList
最开始的报错代码如下:
Page({ data: { bookList: [] }, onLoad: function() { wx.request({ url: 'jiashubing.cn/wechat/book', header: { 'content-type': 'application/json' }, success(res) { var obj = JSON.parse(res.data) console.log(obj) this.setData({ bookList: obj }) } }) } })
报错为:
VM3293:1 thirdScriptError Cannot read property 'setData' of null;at pages/index/index onLoad function;at api request success callback function TypeError: Cannot read property 'setData' of null
报错原因是this 指向有问题,得在onload的时保存实例指向,let that = this,下面全用that,this指向永远值得是自己的上下文环境
正确代码如下:
Page({ data: { bookList: [] }, onLoad: function() { let that = this wx.request({ url: 'jiashubing.cn/wechat/book', header: { 'content-type': 'application/json' }, success(res) { var obj = JSON.parse(res.data) console.log(obj) that.setData({ bookList: obj }) } }) } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

