【发布时间】:2020-11-05 14:09:00
【问题描述】:
我正在制作一个包装器组件,所以我需要在mounted() 方法中添加所有事件。然而问题是,因为它是另一个组件,所以每当我打开该组件时,都会触发事件。我不确定如何阻止它。即使我使它在单击组件时被触发,但它不起作用。它仅适用于第一次安装。重新打开后(从第二次挂载),它只会触发所有事件,我必须阻止它。
有没有一种方法可以阻止不触发 vuejs 的 mount() 钩子中的事件?
编辑: 我正在制作传单绘制包装纸。所有事件均来自leaflet-draw doc。
this.addnew() 是被触发的。
objectLayer.on("layeradd", (e) => {
let layer = e.layer;
layer.on("click", onClickFeatureSelct, layer);
if (typeof layer.options.id === "undefined") {
layer.options.id = L.Util.stamp(layer);
}
if (!layer.feature) {
let json = layer.toGeoJSON();
layer.feature = L.GeoJSON.asFeature(json);
}
let properties = layer.feature.properties;
let keyvalue = L.stamp(layer);
if (layer instanceof L.NodeCircle) {
let latlng = layer.getLatLng();
itemType = "node";
let nodes = this.$store.getters.nodeList;
let result = false;
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].keyvalue == keyvalue) {
result = true;
} else {
result = false;
}
}
if (!result) {
console.log('layer added')
// this.addNew(latlng, itemType, keyvalue);
}
if (!properties.NODE_ID) {
properties.NODE_ID = parseInt(this.newNodeId);
properties.NODE_NAME = "-";
this.addedNodes.push(properties.NODE_ID);
layer.bindTooltip(properties.NODE_NAME + "<br>(" + properties.NODE_ID.toString() + ")");
nodeObj[keyvalue.toString()] = layer;
}
// console.log('added nodes', this.addedNodes)
if (!nodeLayer.hasLayer(layer)) nodeLayer.addLayer(layer);
}
});
【问题讨论】:
-
如何在挂载的钩子中注册事件以及哪些事件?以及如何触发事件?
-
你能展示一些代码吗?这些挂载的方法是什么样的?
-
@Sphinx 添加了代码!
-
@DanielElkington 添加了代码!
标签: javascript vue.js vue-component lifecycle