vue给data中已定义的变量用this赋值报错问题(TypeError: Cannot set property ‘catalogTable_body‘ of undefined)

问题描述

  下面是一个简单的文件上传功能,data里面申明的catalogTable_body,在下面的catalogUpload()函数里面用this调用的时候,会报错未定义catalogTable_body。
  这是因为用了 function函数的原因,在函数里面,this是指向函数本身,已经不是外部的默认this了。
export default {
        name: "catalog",
        data() {
            return {
               catalogTable_body:{},
               
            }
        }, 
        methods: {
          
            catalogUpload(e){ 
              let formData = new FormData(); 
              var ups=qs.parse(document.getElementById('chooseFile').value); 
              formData.append('file_data', e.target.files[0]);  
              let url = '/drugs/match/';
              let config = {
                headers:{'Content-Type':'multipart/form-data'}
              }; 
              this.$axios.post(url,formData, config).then(function (response) { 
                var catalogTableBody=[];
                for(var i=1;i<response.data.Sheet1.length;i++){
                  catalogTableBody.push(response.data.Sheet1[i]); 
                } 
                this.catalogTable_body = catalogTableBody;
                 
              }) 
            }, 
    
        }, 
    }

解决方案

使用一个变量that 指向外部的this ,然后调用 that.catalogTable_body 。
export default {
        name: "catalog",
        data() {
            return {
               catalogTable_body:{},                
            }
        }, 
        methods: { 
            catalogUpload(e){ 
              let formData = new FormData(); 
              var ups=qs.parse(document.getElementById('chooseFile').value); 
              formData.append('file_data', e.target.files[0]);  
              let url = '/drugs/match/';
              let config = {
                headers:{'Content-Type':'multipart/form-data'}
              };
               const that=this; //用that变量解决函数内部this指向问题 
              this.$axios.post(url,formData, config).then(function (response) { 
                var catalogTableBody=[];
                for(var i=1;i<response.data.Sheet1.length;i++){
                  catalogTableBody.push(response.data.Sheet1[i]); 
                } 
                that.catalogTable_body = catalogTableBody; 
              }) 
            }, 
        }, 
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值