showEvaluationList移动到上边后为什么evaluationList变成undefined?

showEvaluationList移动到上边后为什么evaluationList变成undefined?

showEvaluationList: function (bookId, isFlush) {
    axios.get("/api/evaluation/list?bookId=" + bookId)
        .then(function (response) {
            const json = response.data
            if (json.code == "0") {
                if(isFlush){
                    this.evaluationList.splice(0, this.evaluationList.length)
                }
                const list = json.data.list;
                list.forEach(function (item) {
                    item.ct = formatDate(item.create_time);
                    this.evaluationList.push(item)
                })
            } else {
                console.error(json)
            }
        })

这里的objApp我直接都替换成this了

报错截图:

https://img1.sycdn.imooc.com//climg/62022f2709e1127310970129.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2022-02-08 18:29:46

同学你好,同学所说的showEvaluationList移到上面是指移到哪里呢,objApp无法直接使用this来替代,const objApp = this;是表示页面初始化时获取当前的应用对象,而用this替换后无法获取当前的应用对象,所以就会报错

祝学习愉快~

  • 提问者 小马小灰灰 #1

    objApp调用的showEvaluationList,为什么不能直接用this来替代?

    2022-02-09 09:24:04
  • 提问者 小马小灰灰 #2

    好的,确实objApp不能直接替换this,但是如果在.then()的function里面使用this,this指代的是什么?

    2022-02-09 09:29:09
  • 好帮手慕阿园 回复 提问者 小马小灰灰 #3

    同学你好,这样的话,this就指向的是回调函数中的对象本体,而不是当前对象的本体;需要在外部定义一个变量接收this之后,然后在then 的回调中使用该变量,也就是课程中的代码

    祝学习愉快~

    2022-02-09 10:03:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师