Cha*_*haw 5 javascript lifecycle vue.js vue-component
我正在制作一个包装组件,所以我需要在mounted() 方法中添加所有事件。然而事情是,因为它是另一个组件,每当我打开该组件时,都会触发事件。我不知道如何阻止它。即使我让它在单击组件时被触发,但它没有用。它仅适用于第一次安装。重新打开它(从第二个安装)后,它只会触发所有事件,我必须阻止它。
有没有一种方法可以阻止我不触发 vuejs 的mounted() 钩子中的事件?
编辑:我正在制作传单画包装。所有事件都来自传单绘制文档。
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);
}
});
Run Code Online (Sandbox Code Playgroud)
好吧,对于像我一样面临同样问题的人来说,这个问题得到了 5 分。这是我的做法...
组件相关时的 Vue.js 安装顺序。子组件 -> 父组件
添加 this.$nextTick() 不起作用。
即使它是一个 SPA Web 应用程序。当事件位于子组件中时,没有办法不触发事件。所以我只是重新加载......我知道这样做不是一个好主意,但我找不到任何其他方法来修复它。但是,我认为向父组件添加标志并在父组件准备好时触发该事件可能会起作用。
我将再次重新尝试这个逻辑,并让你知道我后来是怎么做的。不会那么快。对不起。