禁用特定视图中抽屉的滑动打开

时间:2013-09-06 13:33:52

标签: javascript jquery kendo-ui kendo-mobile

我正在使用Kendo Mobile开发一个Web应用程序,并使用Drawer小部件作为菜单。我的一个观点是谷歌地图,我想在这个视图中禁用剑道移动抽屉的滑动到开放功能,原因显而易见......

我尝试了以下内容:

绑定到抽屉的beforeShow事件

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

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

这个问题是,当我点击顶部栏中的菜单按钮时,它也会触发(并防止抽屉打开)。

我查看了beforeShowEvt,如果通过刷卡菜单点击触发它,似乎找不到任何东西让我知道。

绑定到包含div的Google地图

...并抓住touchstart事件以阻止他们传播并被剑道接听。

这根本没用。

2 个答案:

答案 0 :(得分:2)

以下是我解决问题的方法:

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

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

  3. 在抽屉的beforeShow事件中添加了一个检查,以查看标志是否为true,如果是preventDefault();

  4. 像魅力一样!

答案 1 :(得分:1)

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

app.navigate("nodrawerwidgets.html");

OR

<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
  }
});

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

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