【问题标题】:ionic - Using arguments with navCtrl.push()ionic - 使用带有 navCtrl.push() 的参数
【发布时间】:2017-09-07 20:02:02
【问题描述】:

我从 home.html 调用一个方法

(click)="openPage(EventsPage)"

我知道如果我只是使用这种方法

openPage() {
  this.navCtrl.push(EventsPage)
}

在 home.ts 中它会起作用。

基本上我想根据点击的内容采用不同的参数,但只使用一种方法导航到所选页面,例如

(click)="openPage(EventsPage)"
(click)="openPage(TimetablePage)"

openPage(page) { 
  this.navCtrl.push(page)
}

我只需要使用 switch 语句或 ifs 吗?我希望我能把它保持在一两行。

任何建议或意见表示感谢。

【问题讨论】:

  • 你的问题很奇怪。如果您有多个按钮,则指示的设置将起作用
  • 我建议使用延迟加载并将页面(组件)字符串引用传递给您的 openPage(page) 函数。
  • user7722867 我也有同样的想法,但显然不是这样????

标签: javascript angular typescript mobile ionic-framework


【解决方案1】:

由于这似乎是一个您刚刚开始或摆弄的项目,这就是我的建议。

当您创建任何新页面时,请连同它们一起创建 page.module.ts。

典型的 page.module.ts 看起来像这样

import {IonicPageModule} from 'ionic-angular';
import {NgModule} from '@angular/core';
import {YourPage} from './your-page.ts';

@NgModule({
    declarations: [YourPage],
    imports: [IonicPageModule.forChild(YourPage)]
})
export class YourPageModule{}

这就是 your-page.ts 的样子

import {Component} from '@angular/core';
import {IonicPage} from 'ionic-angular';

@IonicPage()
@Component({
   selector: 'your-page',
   templateUrl: 'your-page.html'
})
export class YourPage{}

当您完成所有这些设置后,您只需将“YourPage”字符串发送到 openPage(page) 函数即可导航到 YourPage 组件。

通过 ionics NavController 推送字符串而不是导入的页面实例也启用延迟加载(页面的 js-bundle 在需要时获取,而不是在启动时一次全部获取)。如果您有一个包含许多页面的应用程序,这可以显着改善您的启动时间。我还建议阅读 IonicPage docs,它们在处理导航时非常有用。

【讨论】:

  • 非常感谢。现在刚开始工作,但明天我会先试试你的独奏。感谢您抽出宝贵时间,我会及时通知您。
猜你喜欢
  • 1970-01-01
  • 2020-07-13
  • 2023-03-20
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 2013-02-07
相关资源
最近更新 更多