请问在小程序中如何从请求success中将数据返回给对象data?

我的代码如下:

App({
    data: {
        posts: {}
    },
    onLaunch(event) {
        // console.log('onLaunch');
        var that = this;
        swan.request({
            url: 'http://www.sfatpaper.com/content.json',
            success: function (res) {
                console.log(res.data);
                that.setData({
                    posts: res.data.posts
                });
            },
            fail: function (err) {
                console.log('错误码:' + err.errCode);
                console.log('错误信息:' + err.errMsg);
            }
        })      
    }
});

通过ajax,目前可以顺利读取接口数据,其中posts的数据有两项

posts:Array(2)
    0:Object
    1:Object

我想通过that.setData将数据传给外层的data对象,以便其他页面调用
但是报错显示:

Uncaught (in promise) TypeError: that.setData is not a function

还望指正,问题出在那里呢?谢谢!

阅读 3.9k
2 个回答

App没有setData, 直接用this.globalData
Page才有

新手上路,请多包涵

success方法指向闭包,所以this属于闭包,由此在success回调函数里是不能直接使用this.setData()的,如果我们要使用的话,可以在闭包之外先把this赋值给另一个变量。const that = this 原文链接

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题