MenuController
The MenuController is a provider which makes it easy to control a Menu.
Its methods can be used to display the menu, enable the menu, toggle the menu, and more.
The controller will grab a reference to the menu by the side
, id
, or, if neither
of these are passed to it, it will grab the first menu it finds.
Usage
Add a basic menu component to start with. See the Menu API docs for more information on adding menu components.
<ion-menu [content]="mycontent">
<ion-content>
<ion-list>
...
</ion-list>
</ion-content>
</ion-menu>
<ion-nav #mycontent [root]="rootPage"></ion-nav>
To call the controller methods, inject the MenuController
provider
into the page. Then, create some methods for opening, closing, and
toggling the menu.
import { Component } from '@angular/core';
import { MenuController } from 'ionic-angular';
@Component({...})
export class MyPage {
constructor(public menuCtrl: MenuController) {
}
openMenu() {
this.menuCtrl.open();
}
closeMenu() {
this.menuCtrl.close();
}
toggleMenu() {
this.menuCtrl.toggle();
}
}
Since only one menu exists, the MenuController
will grab the
correct menu and call the correct method for each.
Multiple Menus on Different Sides
For applications with both a left and right menu, the desired menu can be
grabbed by passing the side
of the menu. If nothing is passed, it will
default to the "left"
menu.
<ion-menu side="left" [content]="mycontent">...</ion-menu>
<ion-menu side="right" [content]="mycontent">...</ion-menu>
<ion-nav #mycontent [root]="rootPage"></ion-nav>
toggleLeftMenu() {
this.menuCtrl.toggle();
}
toggleRightMenu() {
this.menuCtrl.toggle('right');
}
Multiple Menus on the Same Side
An application can have multiple menus on the same side. In order to determine
the menu to control, an id
should be passed. In the example below, the menu
with the authenticated
id will be enabled, and the menu with the unauthenticated
id will be disabled.
<ion-menu id="authenticated" side="left" [content]="mycontent">...</ion-menu>
<ion-menu id="unauthenticated" side="left" [content]="mycontent">...</ion-menu>
<ion-nav #mycontent [root]="rootPage"></ion-nav>
enableAuthenticatedMenu() {
this.menuCtrl.enable(true, 'authenticated');
this.menuCtrl.enable(false, 'unauthenticated');
}
Note: if an app only has one menu, there is no reason to pass an id
.
Instance Members
open(menuId)
Programatically open the Menu.
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Promise
returns a promise when the menu is fully opened
close(menuId)
Programatically close the Menu. If no menuId
is given as the first
argument then it’ll close any menu which is open. If a menuId
is given then it’ll close that exact menu.
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Promise
returns a promise when the menu is fully closed
toggle(menuId)
Toggle the menu. If it’s closed, it will open, and if opened, it will close.
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Promise
returns a promise when the menu has been toggled
enable(menuId)
Used to enable or disable a menu. For example, there could be multiple left menus, but only one of them should be able to be opened at the same time. If there are multiple menus on the same side, then enabling one menu will also automatically disable all the others that are on the same side.
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Menu
Returns the instance of the menu, which is useful for chaining.
swipeEnable(shouldEnable, menuId)
Used to enable or disable the ability to swipe open the menu.
Param | Type | Details |
---|---|---|
shouldEnable |
boolean
|
True if it should be swipe-able, false if not. |
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Menu
Returns the instance of the menu, which is useful for chaining.
isOpen(menuId)
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
boolean
Returns true if the specified menu is currently open, otherwise false. If the menuId is not specified, it returns true if ANY menu is currenly open.
isEnabled(menuId)
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
boolean
Returns true if the menu is currently enabled, otherwise false.
get(menuId)
Used to get a menu instance. If a menuId
is not provided then it’ll
return the first menu found. If a menuId
is left
or right
, then
it’ll return the enabled menu on that side. Otherwise, if a menuId
is
provided, then it’ll try to find the menu using the menu’s id
property. If a menu is not found then it’ll return null
.
Param | Type | Details |
---|---|---|
menuId |
string
|
Optionally get the menu by its id, or side.Optional |
Menu
Returns the instance of the menu if found, otherwise null
.
getOpen()
Menu
Returns the instance of the menu already opened, otherwise null
.
getMenus()
Array<Menu>
Returns an array of all menu instances.
Sass Variables
Property | Default | Description |
---|---|---|
$menu-ios-background |
$background-ios-color |
Background of the menu |
$menu-ios-box-shadow-color |
rgba(0, 0, 0, .25) |
Box shadow color of the menu |
$menu-ios-box-shadow |
0 0 10px $menu-ios-box-shadow-color |
Box shadow of the menu |
Property | Default | Description |
---|---|---|
$menu-md-background |
$background-md-color |
Background of the menu |
$menu-md-box-shadow-color |
rgba(0, 0, 0, .25) |
Box shadow color of the menu |
$menu-md-box-shadow |
0 0 10px $menu-md-box-shadow-color |
Box shadow of the menu |
Property | Default | Description |
---|---|---|
$menu-wp-background |
#f2f2f2 |
Background of the menu |