#遇到的小问题,做个记录
通过props在view标签中绑定数据:
<view id="leaflet" :props="options" :change:props="leafletmap.createMarker" ></view>
data中定义如下:
data(){
return{
options:{
markerDataArr:null,
iconRotation:0,
},
}
获取系统定位的函数如下:
// 获取点位坐标
getPsGis(){
uni.getLocation({
type: 'wgs84',
success: function (res) {
// console.log('当前位置的经度:' + res.longitude);
// console.log('当前位置的纬度:' + res.latitude);
this.options.markerDataArr = [res.latitude,res.longitude];
console.log(this.options.markerDataArr);
}
});
},
randerjs中createMarker代码略。
在createMarker中发现无法监听到markerDataArr 的变化,于是尝试在uni.getLocation外打印options的值,发现依旧为null,经过查找,发现此函数的回调中,使用this代表回调中的对象,无法正常获取到data里的数据。需要修改代码为以下代码:
// 获取点位坐标
getPsGis(){
var homethis = this;
uni.getLocation({
type: 'wgs84',
success: function (res) {
// console.log('当前位置的经度:' + res.longitude);
// console.log('当前位置的纬度:' + res.latitude);
homethis.options.markerDataArr = [res.latitude,res.longitude];
console.log(homethis.options.markerDataArr);
}
});
},
此时可正确监听到数据变化,问题解决。
出现原因:在vue2中,回调函数内this指向问题。