收藏
回答

在onLoad中用setdata设置不成功?

代码如下:

const db = wx.cloud.database()
Page({
  data: {
    banner: []
  },
  onLoadfunction () {
    let that = this
    db.collection('swiper').get({
      successfunction (res{
        console.log('轮播图获取成功111', res)
        that.setdata({
          banner: res.data
        })
        console.log('轮播图获取成功222', res)
      },
      failfunction (res{
        console.log('轮播图获取失败', res)
      },
    })
  }
});


控制台输出如下:

轮播图获取成功111 {data: Array(3), errMsg: "collection.get:ok"}
VM5313:3 Thu Oct 19 2023 12:05:49 GMT+0800 (中国标准时间) 云开发数据库索引建议
VM5313:4 发起的如下数据库查询经自动检测发现以下问题
(anonymous) @ VM5313:4
(anonymous) @ VM5313:11
VM5313:5 查询语句:
VM5313:6 db.collection('swiper').where({})
.get()
VM5313:8 1. 全量查询告警: 空查询语句可能需扫全表
(anonymous) @ VM5313:8
(anonymous) @ VM5313:11


无法正常给that赋值,第一次读取数据库信息能打印,第二次无法打印。

怎么才能正确赋值,并第二次能正常打印呢?


最后一次编辑于  2023-10-19
回答关注问题邀请回答
收藏

5 个回答

  • CRMEB
    CRMEB
    2023-10-19

    这个问题是因为在`success`回调函数中,你使用了`that.setdata`,但是`that`并没有被定义。你应该使用`this.setData`来更新页面数据。以下是修改后的代码:


    const db = wx.cloud.database()
    Page({
      data: {
        banner: []
      },
      getBannerData: function () {
        db.collection('swiper').get({
          success: function (res) {
            console.log('轮播图获取成功111', res)
            this.setData({
              banner: res.data
            })
            console.log('轮播图获取成功222', res)
          },
          fail: function (res) {
            console.log('轮播图获取失败', res)
          },
        })
      }
    });
    


    同时,你需要将`this`绑定到`getBannerData`方法上,以便在回调函数中使用它。你可以在`Page`构造函数中添加以下代码:


    Page({
      data: {
        banner: []
      },
      getBannerData: function () {
        // ...
      },
      onLoad: function () {
        this.getBannerData();
      }
    });
    
    2023-10-19
    有用 1
    回复 1
  • 正青春
    正青春
    2023-10-19

    that.setData({...}),你可以直接打印res.data,看下输出内容,再赋值,确认一下是否是自己要显示的内容

    2023-10-19
    有用 1
    回复 1
  • Jianbo
    Jianbo
    2023-10-19
    setData
    


    2023-10-19
    有用 1
    回复 1
  • 零²⁰²⁴
    零²⁰²⁴
    2023-10-19

    setData 不是 setdata, D 要大写

    2023-10-19
    有用 1
    回复 1
  • 微蓝色雪狐
    微蓝色雪狐
    2023-10-19

    setData()

    2023-10-19
    有用 1
    回复
登录 后发表内容