【发布时间】:2019-08-21 15:06:15
【问题描述】:
我正在构建应用程序,使用 vue.js 将传单地图上的数据显示为弹出窗口。我想在传单弹出窗口中使用作为传单对象一部分的“bringToFront”函数。如何调用函数 - 无论是作为 L 对象,还是作为 l-popup 组件?
Vue-leaf-let 库可以将传单元素呈现为“l-marker”或“l-popup”等组件。例如,用于标记的“l-add”等函数通过添加“@”符号(作为 vue 组件)来使用。
很遗憾,我还没有找到任何有条件地为弹出层使用 bringToFront() 或bringToBack 函数的方法。
我尝试将@bring-to-front="condition" 传递给组件,就像使用标记的@add 一样;
在弹出窗口中使用“:ref”会带来没有传单方法的“vue”组件。
Component:
``` <l-layer-group ref="layerGroup">
<l-marker v-for="items"
:ref="`someRef`"
:lat-lng="item"
//succeed:
@add="($event)=>open($event, item)">
<l-popup :lat-lng="item"
//not succeed`enter code here`
@bring-to-front => someFunc()
:ref="`popup${someDiffId}`">
<popup-content :key=item.key" :item="item"/>
</l-popup>
</l-marker>
</l-layer-group>```
from @open I use:
``` open(event, item) {
const marker = event.target;
this.$nextTick(() => {
marker.openPopup()
condition? marker._popup.bringToFront():marker._popup.bringToBack()
setTimeout(() => {
marker.remove()
}, 30000)
})
}
```
通过引用“marker._popup”在标记上使用“@add”我成功了,但不是来自 $this.refs 也不是来自观察者。
从 ":ref" 引用对象是指没有 @bringToFront 方法的 vue 组件,所以我使用来自标记的引用。
【问题讨论】: