for (var i = 0; i < this.lnglats.length; i++) { var marker = new AMap.Marker({ position: [this.lnglats[i].jwd.split(',')[0], this.lnglats[i].jwd.split(',')[ 1]], map: map, zoom: 11, }); marker.setLabel({ offset: new AMap.Pixel(0, 0), //设置文本标注偏移量 content: this.lnglats[i].xxqc, //设置文本标注内容 direction: 'top', style: { color: 'red', // 设置文本颜色 fontSize: '12px' // 设置文本大小 } }); marker.orderno = '123456'; marker.on('click', markerClick); } function markerClick(e) { console.log(e) console.log(e.orderno) // console.log(e.target.content) infoWindow.setContent(e.target.content); infoWindow.open(map, e.target.getPosition()); // this.isNone = !this.isNone // console.log(this.isNone) // this.$refs.popup.open('bottom') that.confirmDialog() }为什么打印不出来orderno
时间: 2024-04-13 22:30:17 浏览: 103
在上述代码中,您在创建marker对象后,将orderno属性添加到marker对象中。然后,在markerClick函数中,通过e.target获取到点击的marker对象,再通过e.target.orderno来获取orderno属性的值。
根据您提供的代码,如果无法打印出orderno属性的值,可能是因为e.target并不是您创建的marker对象。这可能是由于事件处理函数中的作用域问题导致的。
您可以尝试使用闭包来解决这个问题。在循环中创建一个立即执行的函数,将marker作为参数传递给该函数,并在函数内部处理点击事件。示例代码如下:
```javascript
for (var i = 0; i < this.lnglats.length; i++) {
(function(marker) {
marker.setLabel({
offset: new AMap.Pixel(0, 0),
content: marker.content,
direction: 'top',
style: {
color: 'red',
fontSize: '12px'
}
});
marker.orderno = '123456';
marker.on('click', function(e) {
console.log(e.target.orderno);
// 其他操作
});
})(new AMap.Marker({
position: [this.lnglats[i].jwd.split(',')[0], this.lnglats[i].jwd.split(',')[1]],
map: map,
zoom: 11
}));
}
```
在上述代码中,我们将marker作为参数传递给立即执行的函数,并在该函数内部处理点击事件。这样可以确保每个marker对象都有自己独立的作用域,可以正确访问到orderno属性的值。请注意,我也根据您的代码做了一些修改,将content属性改为了marker.content,以确保正确设置文本标注的内容。
阅读全文