博客
关于我
小程序var that=this
阅读量:440 次
发布时间:2019-03-06

本文共 779 字,大约阅读时间需要 2 分钟。

  小程序的js函数中,一般第一句就是var that=this,那么此语句的必要性是什么呢?下面用一段代码来解释这个问题

Page({  //页面的初始数据  loadUsers: function () {    var that=this    data:{      questionId:null;      title:null    }    wx.request({      url:'http://0.0.0.0:5000/question/type=2/2',      method:'get',      success:function(res){        console.log(res.data)        var d=res.data['data']        that.setData({          questionId:d['questionId'],          title:d['title']})        console.log(this.data.questionId)      }    })  },

  这段程序报错:Cannot read property 'questionId' of undefined

  这是因为在javascript语言中,this代表着当前的对象,它在程序中随着执行的上下文随时会变化。当原本的loadUsers函数中调用其它接口比如wx.request或success:function时,this就不再代表loadUsers函数,因此就不能由this找到之前定义的data。this包含了当时页面的初始值,state,以及当前你自己定义的函数。解决方法就是用一个that记录loadUsers函数中的这些内容,从而能在接口中使用这些值。

转载地址:http://bflyz.baihongyu.com/

你可能感兴趣的文章
MySQL集群解决方案(4):负载均衡
查看>>
MySQL集群解决方案(5):PXC集群
查看>>
MySQL面试宝典
查看>>
WAP短信:融合传统短信和互联网的新型通信方式
查看>>
mysql面试题学校三表查询_mysql三表查询分组后取每组最大值,mysql面试题。
查看>>
Mysql面试题精选
查看>>
MySQL面试题集锦
查看>>
mysql面试题,存储引擎InnoDB和MyISAM
查看>>
mysql面试题:为什么MySQL单表不能超过2000W条数据?
查看>>
mysql面试题:创建索引时会不会锁表?
查看>>
mysql面试题:高度为3的B+树可以存放多少数据?
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
mysql驱动、durid、mybatis之间的关系
查看>>
mysql驱动支持中文_mysql 驱动包-Go语言中文社区
查看>>
MySQL高可用之——keepalived+互为主从
查看>>
MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
查看>>
MySQL高可用解决方案
查看>>
MySQL高可用解决方案详解
查看>>
MYSQL高可用集群MHA架构
查看>>
MySQL高可用集群架构MHA企业级实战
查看>>