首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向正面或背面的传单弹出窗口

指向正面或背面的传单弹出窗口
EN

Stack Overflow用户
提问于 2019-08-21 23:06:16
回答 2查看 748关注 0票数 2

我正在建设的应用程序显示在一个传单地图上的数据弹出使用vue.js。我想在leaflet弹出窗口中使用"bringToFront“函数,它是leaflet对象的一部分。我如何调用函数-无论是作为L对象,还是l-popup组件?

Vue- leaflet库允许将leaflet元素呈现为像"l-marker“或"l-popup”这样的组件。例如,像"l-add“这样的标记函数可以通过添加"@”符号(作为vue组件)来使用。

不幸的是,我还没有找到任何有条件地使用bringToFront()或bringToBack函数来弹出层的方法。

我尝试过将@bring to-front=“condition”传递到组件中,就像使用标记的@add一样;

在弹出窗口中使用":ref“可以带出不带leaflet方法的"vue”组件。

代码语言:javascript
复制
Component:
``` <l-layer-group ref="layerGroup">
代码语言:javascript
复制
        <l-marker v-for="items"
代码语言:javascript
复制
                  :ref="`someRef`"
代码语言:javascript
复制
                  :lat-lng="item"
代码语言:javascript
复制
               //succeed:
代码语言:javascript
复制
                  @add="($event)=>open($event, item)">
代码语言:javascript
复制
            <l-popup :lat-lng="item"
代码语言:javascript
复制
                     //not succeed`enter code here`
代码语言:javascript
复制
                      @bring-to-front => someFunc()
代码语言:javascript
复制
                     :ref="`popup${someDiffId}`">
代码语言:javascript
复制
                <popup-content :key=item.key" :item="item"/>
代码语言:javascript
复制
            </l-popup>
代码语言:javascript
复制
        </l-marker>
代码语言:javascript
复制
    </l-layer-group>```

在@open中,我使用:

代码语言:javascript
复制
                const marker = event.target;
                this.$nextTick(() => {
                    marker.openPopup()
                    condition? marker._popup.bringToFront():marker._popup.bringToBack()
                    setTimeout(() => {
                        marker.remove()
                    }, 30000)
                })
            }
代码语言:javascript
复制

通过引用"marker._popup“在标记上使用"@add”,我成功了,但不是来自$this.refs,也不是来自观察者。

引用来自":ref“的对象就是引用一个没有@bringToFront方法的vue组件,所以我使用了来自标记的引用。

EN

回答 2

Stack Overflow用户

发布于 2019-08-21 23:36:00

好吧,当使用所有组件继承leaflet的“层”时-在内部使用"@ add“将渲染到map/marker/layer的引用作为"leaflet对象”,这意味着只需添加"@add":

代码语言:javascript
复制
<l-popup  @add="($event)=>func($event, leafletItem)">

和内部的func:

代码语言:javascript
复制
  methods: {
         func(event, leafletItem){
          const popup = event.target;
          condition ? popup.bringToFront() : popup.bringToBack()
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2019-08-22 12:53:53

@bring to -front不是添加到地图leaflet对象的事件,而@add -是事件,所以@add($event)会引用leaflet对象。因为你只使用了"@add“作为弹出组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57594527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档