收藏
回答

关于setData

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug map 客户端 6.5.3 2.0.0

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


这是data里面的内容:

data:{

longitude:"",

latitude:"",

},

我先调用了一个函数

getposition() {

var self=this;

wx.getLocation({

type: 'gcj02',

success(res) {

self.setData({//回调函数里面不能再用this

latitude:res.latitude,

longitude:res.longitude

})

}

})

}

将目前位置的经纬度信息传给data,然后wxml里面也实现了我想要的map功能

可是当我想输出一下latitude

console.log(this.data.latitude)

控制台输出为空,也就是我初始给的值,这是为什么?

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

2 个回答

  • 铭锋科技
    铭锋科技
    03-19

    在getposition()里面就写console.log(self.data.latitude)

    03-19
    赞同
    回复 1
    • 权
      03-19

      不好意思我问题没说清楚,latitude的打印不是在那个函数里面。

      其实我就是想把在getposition里面赋值好的latitude赋值给别的变量,发现不成功,才打印这个变量试一下的


      03-19
      回复
  • ʚ青哥ɞ
    ʚ青哥ɞ
    03-19

    this指向问题 你可以打印一下this就知道了

    已经用self保存了this 就用self

    03-19
    赞同
    回复 5
    • 权
      03-19

      不是那样子,

      onShow(){

      this.getposition();

      console.log(this.data.latitude)


      }

      getposition() {

      var self=this;

      wx.getLocation({

      type: 'gcj02',

      success(res) {

      self.setData({//回调函数里面不能再用this

      latitude:res.latitude,

      longitude:res.longitude

      })

      }

      })

      }


      03-19
      回复
    • 权
      03-19

      self是函数里面的,我想在onshow里面打印,却打印不出来好奇怪

      03-19
      回复
    • ʚ青哥ɞ
      ʚ青哥ɞ
      03-25回复

      试试在setData后打印 应该是异步问题

      03-25
      回复
    • 权
      03-25回复ʚ青哥ɞ

      在setData后打印是有值的,这种异步问题该怎么解决啊,我之后也碰到了和这个相似的问题,最后解决办法都是很粗暴

      03-25
      回复
    • ʚ青哥ɞ
      ʚ青哥ɞ
      03-26回复

      后续方法放在success里执行,setData也可以写回调的


      03-26
      回复