Ionic页面未缓存



我有两个页面:

  • 主页
  • 关于页面

HomePage是根页面

在启动时调用CCD_ 1。我使用NavController:从主页导航到AboutPage

navigateToAbout(): void {
this.navCtrl.push('AboutPage');
}

每次我导航到AboutPage时,都会调用AboutPage#ionViewDidLoad。如果我使用ion-navbar导航回主页,则会不调用HomePage#ionViewDidLoad,但如果我使用了navCtrl.push('HomePage'),则会再次调用HomePage#ionViewDidLoad

有人能解释一下,如果我使用navCtrl.push(...),为什么每次都调用ionViewDidLoad吗。根据Ionic NavController文档,页面应该被缓存,并且每个页面只能调用一次ionViewDidLoad:

视图创建

默认情况下,如果对页面进行导航,则会将其缓存并留在DOM中远离但仍在导航堆栈中(push())。当它们从导航堆栈(在pop()或setRoot()上)。

ionViewDidLoad

加载页面后运行。此事件只发生每创建一页一次。如果页面离开但被缓存,则事件将不会在后续查看中再次启动。ionViewDidLoad事件是放置页面设置代码的好地方。

因为如果使用导航栏导航回主页,则会使用pop()方法。如果在AboutPage上使用push('HomePage'),则会创建主页的新实例,随后会调用HomePage#ionViewDidLoad0。

只有已经在导航堆栈上的页面才会被缓存(就像第一次推送AboutPage时的主页),但推送到导航堆栈的页面总是新创建的。

也许这个例子有助于将其可视化:

1.启动后的初始状态:

[HomePage]

2.nav.push('AboutPage'):后的状态

[HomePage, AboutPage]
^^^^^^^^
cached

3.说明是否使用导航条导航返回或pop():

[HomePage] // The cached instance is used so ionViewDidLoad() is not called

4.如果在第二步后使用.push('HomePage'),请说明:

[HomePage, AboutPage, HomePage] // a new instance is created so ionViewDidLoad() is called
^^^^^^^^  ^^^^^^^^^
cached    cached

相关内容

  • 没有找到相关文章

最新更新