3

我正在使用 Kendo Mobile 开发一个 Web 应用程序,并将 Drawer 小部件用作菜单。我的一个观点是谷歌地图,我想在这个视图中禁用 Kendo Mobile 抽屉的滑动打开功能,原因很明显......

我尝试了以下方法:

绑定到抽屉的 beforeShow 事件

...如果当前视图是地图视图,则阻止它打开

    beforeShow: function (beforeShowEvt) {
        if(app.view().id == "#stationMap") {
            beforeShowEvt.preventDefault();
        }
    }

问题在于,当我单击顶部栏中的菜单按钮时,它也会触发(并阻止抽屉打开)。

我查看了 beforeShowEvt 并且似乎找不到任何东西让我知道它是否是通过菜单点击滑动触发的。

绑定到包含 div 的谷歌地图

...并捕获 touchstart 事件以阻止它们传播并被 Kendo 拾取。

这根本没有用。

4

2 回答 2

2

这是我解决问题的方法:

  1. 向 Google Map 的dragstart事件添加了一个事件处理程序,将标志设置为 true

  2. 向抽屉按钮的touchstart事件添加了一个事件处理程序,将此标志设置为 false

  3. 在 Drawer 的 beforeShow 事件中添加了一个检查,以查看 flag 是否为true,如果是 IpreventDefault();

奇迹般有效!

于 2013-09-23T21:14:38.743 回答
1

我知道这不是真正的答案,但我有一个解决方法。只需创建一个新的 .html 文件并将您的 google 小部件放入其中,然后像这样调用它:

app.navigate("nodrawerwidgets.html");

或者

<a href="nodrawerwidgets.html">Google widget<a>

我的第一个想法是通过将小部件包装在 div 中来拦截滑动操作:

    <div id="divStopSwipe">

...

$("#divStopSwipe").kendoTouch({
  enableSwipe: true,
  swipe: function (e) { //do nothing or figure out how to let the action pass down to the widget
  }
});

..但是这会阻止谷歌小部件获取滑动操作。

希望这会有所帮助 - 我也是移动 ui 的新手。

于 2013-09-13T23:26:21.147 回答