一、问题复现
- 通过自定义信息窗生成标记后点击触发的事件,在methods无法触发相应事件,显示当前事件未定义
- 注意:
此处必须是onclick进行事件绑定
自定义信息窗添加事件
getGraphicMarker(item) {
let content = [
"<div class='contentInfo' style='background-color: #fff;'>",
"<div class='contentInfo_btn' style='font-size:14px;'>",
`<i onclick='delClick(${item.target._opts.extData.id})'>删除</i>`,
`<i onclick='editClick(${item.target._opts.extData.id})'>修改</i>`,
"</div>",
"<span onclick='closeClick()'>x</span>",
"</div>",
];
this.infoWindow = new AMap.InfoWindow({
isCustom: true,
content: content.join("<br>"),
position: new AMap.LngLat(item.lnglat.lng, item.lnglat.lat),
anchor: "top-left",
});
this.infoWindow.open(this.map);
},
待触发事件
methods: {
closeClick() {
console.log('关闭');
this.infoWindow.close()
},
delClick(e) {
console.log('删除', e);
},
editClick(e) {
console.log('编辑', e);
},
},
二、解决方案
- 将定义标记后点击触发的事件放在钩子函数里,成功触发事件,参数也显示正常
created() {
window.closeClick = () => {
console.log('关闭');
this.infoWindow.close()
}
window.delClick = (e) => {
console.log('删除', e);
}
window.editClick = (e) => {
console.log('编辑', e);
}
},