收藏
回答

用setData给data中的数组传值不了?

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 6.6.7 2.0.0

Page({

data: {

arrday1: [],

},

onLoad: function (e) {

……

Product2.setQuery(andQuery2).find().then(res => {

this.setData({ arrday1: res.data.objects})

console.log("测试数据", res.data.objects)

console.log("测试数据", arrday1)

}, err => { })

}

res.data.objects里面数据是正常的,arrday1里没有数据是怎么回事?


回答关注问题邀请回答
收藏

6 个回答

  • Akira
    Akira
    2018-06-27

    onLoad下写 var that = this; 然后再 that.setData({arrday1:res.data.objects})

    2018-06-27
    有用 1
    回复
  • 难飞
    难飞
    2019-11-19

    大哥解决没有一样的问题

    2019-11-19
    有用
    回复
  • 海子
    海子
    2018-06-28

    setData函数是异步的呀

    2018-06-28
    有用
    回复
  • 2018-06-28

    这样写,另外需要注意的是setData是异步的


    2018-06-28
    有用
    回复
  • TA
    TA
    2018-06-25

    this的指向对吗?比如换成 var that = this; 箭头函数里面的this用that代替 或者尝试着把最外面的数组改成对象接收(空字符接收也可以尝试下)

    2018-06-25
    有用
    回复 5
    • 春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      2018-06-25

      好的,我再试试。谢谢

      2018-06-25
      回复
    • 春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      2018-06-25

      Page({

      data: {

      arrday1: [111,,222],

      },

      onLoad: function (e) {

      ……

      Product2.setQuery(andQuery2).find().then(res => {

      var that = this

      that.setData({ arrday1: res.data.objects})

      console.log("测试数据", res.data.objects)

      console.log("测试数据", res.data.arrday1)

      }, err => { })

      }

      res.data.objects里面数据是正常的,arrday1里没有数据是怎么回事?

      这样试了下,arrday1里面还是[111,,222],并没有变成res.data.objects


      2018-06-25
      回复
    • TA
      TA
      2018-06-25

      你不是var that = this;声明在箭头函数的外面

      2018-06-25
      回复
    • 春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      2018-06-25回复TA

      Page({

      data: {

      arrday1: [111,,222],

      },

      onLoad: function (e) {

      ……

      var that = this

      Product2.setQuery(andQuery2).find().then(res => {

      that .setData({ arrday1: res.data.objects})

      console.log("测试数据", res.data.objects)

      console.log("测试数据", res.data.arrday1)

      }, err => { })

      }

      这样吗?还是不行哟

      2018-06-25
      回复
    • 春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      2018-06-25

      for (var i = 0; i < res.data.objects.length; i++) {

       var x1 = {}

       var y1 = " arrday1 [" + i + "]"

       x1[y1] = res.data.objects[i]

       this.setData(x1)

      }

      console.log("测试数据", this.data. arrday1 )

      console.log("测试数据", this.data.arrday1[0])


      如果这样写 this.data. arrday1就正常了,有 res.data.objects的数据了,但是奇怪的是 this.data.arrday1[0]又没有数据是undefined


      2018-06-25
      回复
  • 飞天鱼
    飞天鱼
    2018-06-25

    console.log("测试数据", this.data.arrday1)

    2018-06-25
    有用
    回复 2
    • 春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²
      2018-06-25

      我是写的 console.log("测试数据", this.data.arrday1) ,问问题的时候写掉了。 console.log("测试数据", this.data.arrday1) 这个还是没有数据。

      2018-06-25
      回复
    • 飞天鱼
      飞天鱼
      2018-06-26回复春哥℡¹³⁹⁷¹⁵³⁰⁹⁵²

      打印之前应该先存进变量arrday1里,

      this.data.arrday1=res.data.objects,

      后面获取时console.log(this.data.arrday1)能拿到

      2018-06-26
      回复
登录 后发表内容