收藏
回答

用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里没有数据是怎么回事?


最后一次编辑于  2018-06-25  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

5 个回答

  • Akira
    Akira
    2018-06-27

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

    2018-06-27
    赞同 1
    回复
  • Lid
    Lid
    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
      回复
    • Lid
      Lid
      2018-06-26回复春哥体彩

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

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

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

      2018-06-26
      回复
  • 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-28

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


    2018-06-28
    赞同
    回复
  • 海子
    海子
    2018-06-28

    setData函数是异步的呀

    2018-06-28
    赞同
    回复