vue methods中的方法互相调用 this指向问题

vue的方法都写在methods下,方法互相调用也很简单,直接在方法中this.方法名就可以了

 loadCompany(){
    var markerdata=[]
    this.SetMarkers(markerdata);
 }

但是有些情况下不能直接this调用,如监听事件箭头函数内,如果直接在方法体内写,代码又过长,可以用如下方法调用:

SetMarkers(data){
     var methodsobj=this.$options.methods;  //获取methods中的所有方法
   //地图上点击后打开弹窗
    this.myMap.on('click',(e)=>{
                var infoWindow = new AMap.InfoWindow({
                  offset: new AMap.Pixel(0, -30),
                  content:methodsobj.createInfoWindow(title, content)
                  });             
              });
    })
}
createInfoWindow(marker){
   //点击事件后执行
}

this.$emit is not a function报错因为this指向问题,基本上就是 function 和 () => 之间的问题,进行这俩的替换基本上都可以解决。
第一种:

 // 有些情况下不能直接this调用,如监听事件箭头函数内
 this.draw.on('drawend', (e) => {
    if(featureType == "Polygon") {                      
        this.$emit('send_data',this.fencePolygonData,"polyton");
        alert(this.fencePolygonData);
    }
 }

第二种:

 var _this = this;
 this.draw.on('drawend', function(e) {
    if(featureType == "Polygon") {                      
        _this .$emit('send_data',this.fencePolygonData,"polyton");
        alert(this.fencePolygonData);
    }
 }
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值