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);
}
}