是否可以从后退按钮事件调用 ons-sliding-menu 组件的 closeMenu 方法?

Posted

技术标签:

【中文标题】是否可以从后退按钮事件调用 ons-sliding-menu 组件的 closeMenu 方法?【英文标题】:Is possible to call closeMenu method of ons-sliding-menu component from back button event? 【发布时间】:2014-08-26 04:28:44 【问题描述】:

当用户按下 android 的后退按钮时,我想关闭 ons-sliding-menu。我怎样才能做到这一点?当前的实现是:

    var manager = 
        initialize: function() 
            this.bindEvents();
        ,
        bindEvents: function() 
            document.addEventListener('deviceready', this.onDeviceReady, false);
        ,
        onDeviceReady: function()
            document.addEventListener("backbutton", manager.onBackKeyDown, false);
            document.addEventListener("menubutton", manager.onMenuKeyDown, false);
        ,
        onBackKeyDown: function()
            // close ons-sliding-menu if opened
        ,
        onMenuKeyDown: function()
            // close or open ons-sliding-menu
        
    ;
    
    manager.initialize();

我尝试调用ons.slidingMenu.toggleMenu(),但是当onBackKeyDown 事件触发时onsundefined

【问题讨论】:

我可能会通过将事件侦听器附加到 $routeChangeStart 事件来做到这一点。 【参考方案1】:

OnsenuUi 1.1.x 具有组件 ons-back-button

【讨论】:

【参考方案2】:

这可以通过在$routeChangeStart 事件上使用事件监听器来实现。应该这样做。

$rootScope.$on('$routeChangeStart', function () 
  // I'd probably rename this function no to something like closeMenuIfOpen??
  manager.onBackKeyDown();
);

【讨论】:

@JonathanPrates 抱歉,我不知道 onsen ui - 但是您正在编写 angular,因此它与 ui 无关(至少在控制器中)

以上是关于是否可以从后退按钮事件调用 ons-sliding-menu 组件的 closeMenu 方法?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以监听物理 Android 后退按钮的触摸?

如何使用角度检测浏览器后退按钮单击事件?

jquery mobile+html5 写的页面 如何禁用手机后退按钮。或者说如何禁用页面后退。

如何检测浏览器后退按钮事件 - 跨浏览器

IOS - 如何使默认的后退按钮调用展开segue

按下后退按钮时未调用Android onUserLeaveHint()