收藏
回答

为什么一定要 var that = this; this.setData({?

问题模块
API和组件

  chooseimage: function () {
    var that = this;    
    wx.chooseImage({
      count: 1, // 默认9  
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有  
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有  
      success: function (res) {
        this.setData({

..............................................

错误为:

this.setData is not a function;at pages/main/index chooseimage function;at api chooseImage success callback function
TypeError: this.setData is not a function



...............................................

为什么一定要

that.setData({ ....................才行?不好意思,我是搞C++的,这js和微信还是第一次用。请大家解答下,谢谢,

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

4 个回答

  • 末。
    末。
    2017-05-23

    作用域,this指向变了

    2017-05-23
    赞同
    回复
  • YJFn
    YJFn
    2017-05-23

    js里的this是比较特殊的

     success: function (res) {

    在这个function里面,this的上下文已经变了,不再指向当前Page本身,至于它这个时候指向的是什么,还没有深入研究过,不清楚;

    而在wx.xxx请求之外定义的var that = this , that 里面存的就是当前Page本身,不会变的,所以用that没有问题

    2017-05-23
    赞同
    回复
  • Hellinger海灵格
    Hellinger海灵格
    2017-05-23

    哦,理解了,谢谢大家,
    原来同一个函数内部,使用的情景不同其 this 作用域也不同,谢谢哈,

    2017-05-23
    赞同
    回复
  • 阿聪
    阿聪
    2017-05-23

    作用域的问题,this对应的对象变了。不过用var that = this;我一直觉得很别扭。我都用var t = this;

    2017-05-23
    赞同
    回复