网站搜索

typescript - 如何从另一侧添加第二个侧边菜单


我如何添加第二个 sidemenu?我在左侧已经有一个正常的 sidemenu,运行良好。现在我想添加一个带有筛选选项的第二个 sidemenu。

答案#1

正如你可以在 Ionic2 文档的 MenuToggle 中阅读到的,你可以通过首先在你的 app.html(或你想定义第二个菜单的位置)中创建两个 ion-menu 来实现。

<ion-menu [content]="content" side="left" id="menu1">

  <ion-toolbar secondary>
    <ion-title>Menu 1</ion-title>
  </ion-toolbar>

  <ion-content>
    <ion-list>
      <button ion-item menuClose="menu1" detail-none>
        Close Menu 1
      </button>
    </ion-list>
  </ion-content>

</ion-menu>

<ion-menu [content]="content" side="right" id="menu2">

  <ion-toolbar danger>
    <ion-title>Menu 2</ion-title>
  </ion-toolbar>

  <ion-content>
    <ion-list>
      <button ion-item menuClose="menu2" detail-none>
        Close Menu 2
      </button>
    </ion-list>
  </ion-content>

请注意 ion-menu 元素中的 side="left" 和 side="right" 属性。我们稍后会使用它来确定应该打开哪个菜单(id 属性也可以以同样的方式使用)。

然后,在你的页面中,为每个 menuToggle 添加应该打开哪个菜单,通过为其分配我们之前定义的 side 属性(或者如果你愿意,也可以使用 id)。

<ion-header>
  <ion-navbar primary>
    <button menuToggle="left" start>
      <ion-icon name="menu">L</ion-icon>
    </button>
    <button menuToggle="right" end>
      <ion-icon name="menu">R</ion-icon>
    </button>
    <ion-title>
      Multiple Menus in Ionic2
    </ion-title>
  </ion-navbar>
</ion-header>

你可以在这里找到一个可用的plnuker。

更新:

为了测试,我只是将主内容从 app.html 移动到了某个页面的 HTML 文件 map.html。我没有更改边栏或 ID。但是,当点击按钮时,菜单没有出现(也没有被更改)。

我已经在这个 Plunker 中做过了。现在,HomePage 在那个 HTML 文件中定义了右侧的菜单。

<ion-menu [content]="content" side="right" id="menu2">
  <ion-toolbar danger>
    <ion-title>Menu 2</ion-title>
  </ion-toolbar>
  <ion-content>
    <ion-list>
      <button ion-item menuClose="menu2" detail-none>
        Close Menu 2
      </button>
    </ion-list>
  </ion-content>
</ion-menu>

<ion-header>
  <ion-navbar primary>
    <button menuToggle="left" start>
      <ion-icon name="menu">L</ion-icon>
    </button>
    <button menuToggle="right" end>
      <ion-icon name="menu">R</ion-icon>
    </button>
    <ion-title>
      Multiple Menus in Ionic2
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content #content padding>

</ion-content>

请注意 content 变量在 <ion-content> 元素中。正如你可以在 Ionic 文档中看到的那样:

要向应用程序添加菜单,应将该元素作为其所属内容的同级元素添加。应将一个本地变量添加到内容元素,并通过内容属性传递给菜单元素。这告诉菜单它附加到哪个内容,从而知道应该监听哪个元素的手势。