使用"ionic serve"重新加载网址的问题



由于我将Ionic 2项目迁移到Ionic 3,我似乎在ionic serve和重建项目方面遇到了问题。

当我第一次构建这个项目时,一切都按预期进行。但我注意到浏览器的URL栏会跳转到类似localhost:8100/#/home.page/tabs/t0/tab-0/feed.page的内容。在它从未这样做之前,它只显示localhost:8100,而没有其他内容。

我的应用程序逻辑是:有一个更改home.page部分的菜单,home.page中有一个导航到第一个选项卡feed.page的选项卡。

第1期:在迁移之前,我从未在应用程序中浏览时看到任何URL更改。

问题2:在我的代码中工作后,Ionic CLI会像往常一样自动重建代码。然后它实际上应该显示与以前相同的页面,但它没有。home.page的父菜单突然被隐藏,并且只显示feed.page及其内容。订阅源页面之外的所有内容都不见了。


为什么会发生这种情况,我该怎么办?这可能只是一个配置,但我不知道在哪里。

经过数小时的调查,我终于找到了问题。

场景1:

如果在浏览器中加载localhost:8100/,应用程序将按预期启动。

场景2:

如果加载localhost:8100/#/home.page/tabs/t0/tab-0/feed.page,那么所有涉及的和延迟加载的页面实际上都被加载了两次,最后"杀死"了菜单。

我现在所知道的:

  • 我在应用程序的构造函数中手动使用了this.nav.setRoot(HomePage)
  • 这使得所有构造函数加载两次而不是一次
  • 这就是我对菜单有问题的原因

我不知道的是:

  • 如果页面构造函数被调用两次,为什么菜单会被杀死
  • 为什么以及如何根据URL调用HomePage构造函数

这里有一个解决方法:

在我的应用程序的构造函数中使用这一点,如果HomePage已经构造好了,就不会再构造它:

if (this.nav.getActive() instanceof ViewController === false || this.nav.getActive().name !== "HomePage") {
this.nav.setRoot("HomePage");
}

最新更新