问题
最近做地图部分功能的时候用到了右键菜单栏这个功能,在用的过程中发现了一些小问题,现在也还不知道怎么回事,就先记录一下,欢迎大家来讨论。
在百度地图中,我想通过在上下文菜单的回调函数callback
添加一些自定义的参数来完成程序本身的功能,但是发现这种方法不可行。
如果我在callback
函数里面传一个自定义的值时,地图初始化渲染的时候就会一直执行这个回调函数,相当于一个死循环。如果不加参数的话只有点击当前菜单项的时候才会进入当前回调函数。
<bm-context-menu>
<!--该种传参方法会进入死循环-->
<bm-context-menu-item :callback="gotoBeijing(1)" text="去北京"></bm-context-menu-item>
<bm-context-menu-item :callback="gotoShanghai(1)" text="去上海"></bm-context-menu-item>
</bm-context-menu>
对于这种问题我也不知道是怎么回事,我自己理解的是只有右键应该才渲染并执行<bm-context-menu>
里面的代码。
可能对于这个组件回调函数并不支持自定义传参,也有可能是我自己用错了。如果大家遇到过一样的问题或知道是怎么回事的大神解答一下。
对于这个问题,我特意去git上看了一下源码,对于callback
这个函数并没有自定义参数这回事,它只有一个参数{ point,pixel,BMap,map,target:parent}
,这是一个object类型的参数,所以如果要传自定义参数的话只能本地改写源码,或者另找其他方案代替该方案。
const menuItem = new BMap.MenuItem(item.text, function (point, pixel) {
item.callback({
point,
pixel,
BMap,
map,
target: parent
})
}, {
width,
id: item.id,
iconUrl: item.iconUrl
})