嗨,当我浏览页面数时,我遇到了一个问题 ionic 2 侧菜单不起作用,有些页面被设置为根,有些页面被推送到堆栈上。
这是我正在经历的页面流程。
导航堆栈:
RootPage -> navCtrl.push(Page1) -> navCtrl.setRoot(Page2) -> this.navCtrl.push(Page3) ->
this.navCtrl.push(Page4) -> this.navCtrl.push(Page5) -> this.navCtrl.setRoot(Page6) ->
this.navCtrl.setRoot( Page7)
法典:
<ion-menu class="sproglets_menu" [content]="content" persistent="true" >
<!-- (ionOpen)="menuOpened()" (ionClose)="menuClosed()"
-->
<ion-content>
<ion-item no-lines color="transparnt">
<ion-avatar item-start>
<img src="assets/images/addimage.png">
</ion-avatar>
<h2>Umer</h2>
<p>Sproglets</p>
</ion-item>
<ion-list class="rr-menu" no-lines>
<button class="search_button" ion-button block item-left round outline color="light" icon-only (click)="Place_order()">
<ion-icon name='search'></ion-icon>
Search Jobs
</button>
<button ion-item color="transparnt" (click)="Profile()" detail-none>
Profile
</button>
<button ion-item color="transparnt" (click)="Notifications()" detail-none>
Notifications
<span ion-button clear item-end color="login_btn_color">28</span>
</button>
<button ion-item color="transparnt" detail-none>
Timesheets
<span ion-button clear item-end color="login_btn_color">28</span>
</button>
<button ion-item color="transparnt" (click)="Payment()" detail-none>
Payments
<span ion-button clear item-end color="login_btn_color">28</span>
</button>
<button ion-item color="transparnt" (click)="Setting()" detail-none>
Settings
</button>
<button ion-item color="transparnt" (click)="Logout()" detail-none>
Logout
</button>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
离子信息:
- 科尔多瓦 CLI:6.5.0
- 离子框架版本:3.4.2
- 离子 CLI 版本:2.2.1
- 离子应用程序库版本:2.2.0
- 离子应用程序脚本版本:1.3.7
- iOS 部署版本:未安装
- iOS-sim 版本:未安装
- 操作系统: 视窗 8.1
- 节点版本:v4.5.0
- Xcode 版本:未安装
如果我将 Page7 设置为根,侧菜单可以正常工作。
请指导我做错了什么。谢谢!
基本上由于模态,我遇到了问题。我打开模态并导航到模态页面中的下一页,而不是关闭模态然后导航到下一页。 以下是解决此问题的正确流程。
1-从这样的页面打开模态
presentContactModal() {
let contactModal = this.modalCtrl.create(ContactUs);
contactModal.present();
}
2-使用打开的模式的视图控制器关闭模态
constructor(public viewCtrl: ViewController) {
}
dismiss() {
let data = { 'foo': 'bar' };
this.viewCtrl.dismiss(data);
}
3-从第一页导航到下一页,现在它永远不会产生任何菜单打开问题。
this.navCtrl.push(YourPage);
为菜单添加 id:
<ion-menu id="mymenu" class="sproglets_menu" [content]="content" persistent="true" >
在第 2、6、第 7 页(设置为根页面的页面(中,启用您的菜单
constructor(public menuCtrl: MenuController){}
ionViewDidLoad() {
this.menuCtrl.enable(true, "mymenu");
}
如果您仍然面临此问题,我想我已经在这个周年中找到了主要问题。当您从"模态"或"弹出框"推送时,就会出现问题,因此会发生导航问题。要以正确的方式执行此操作,请"从调用弹出框或模式的页面"执行推送或setRoot。这可以通过"onDidDismiss"功能轻松完成:
//Page which calls popover:
popover.create();
//Page popover: Dismiss existing popover (you may also pass a parameter)
popover.dismiss(myParameter);
//Page which calls popover: Veriry if popover was removed
popover.onDidDismiss(data => {
if(data == "something")
{
//Navigate to new page
this.nav.push(newPage)
}
});
也许在您的情况下,其中一个页面是模态或弹出框。所以,试试这种方式,看看会发生什么。
希望对您有所帮助!