【问题标题】:URL reload issue using "ionic serve"使用“离子服务”的 URL 重新加载问题
【发布时间】:2017-11-16 10:18:43
【问题描述】:

自从我将 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 及其内容。提要页面之外的所有内容都消失了。


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

【问题讨论】:

  • 你能分享一条错误信息吗?
  • 没有错误,它只是不显示菜单...它显示了 feed.page 视图,就好像它是独立的一样。
  • 根据我的经验,我建议您删除启动项目时创建的 pages 文件夹(首先备份您的项目)。那就试试ionic generate page home它使用延迟加载,不用导入页面文件更快速,更容易使用。您还可以使用ionic generate 选择标签自动生成带有标签项和导航的标签,并根据需要填写多少个标签并命名。您的页面已完成
  • 这似乎没有帮助@Reza。这个问题与模块的延迟加载有关......

标签: typescript ionic-framework ionic2 ionic3


【解决方案1】:

经过几个小时的调查,我终于找到了问题所在。

场景 1:

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

场景 2:

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

我现在所知道的:

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

我不知道的:

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

这是一种解决方法:

在我的应用程序的构造函数中使用它,HomePage 如果已经构造,则不会再次构造:

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

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2015-08-04
    • 2020-05-15
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多