离子深度链接

时间:2017-08-20 20:58:20

标签: angular typescript ionic3 deep-linking

我用Deep Linking创建了我的第一个Ionic应用程序。 不得不暂时放弃lazy-loading with deep links ...... 但是当你在其他地方导航时,我对URL的存在方式感到困惑,比如回到主页。人们如何围绕这个工作?只是做一些URL重写? 或者这样做可能会打破别的东西? 看起来你也不能轻易消灭这个网址,因为它会再次出现。

我已经看到了Ionic blog以及Github issues关于行为的热烈讨论。

似乎@IonicPage可以控制自定义内容,但这只适用于延迟加载/模块吗?或者你可以在没有延迟加载的情况下使用注释吗?

有关如何最好地使用此功能的任何建议将不胜感激。

我还注意到了一些其他奇怪的行为,因为我用来保存对HomePage的引用的数据结构变得未定义,即使它被导出为常量。这是应用启动时的初始rootNav。 我不得不做一个kludgy hack来解决它,为它做好准备

if (page.home != undefined) { //Bug in Ionic perhaps
   this.nav.setRoot(HomePage, params)
   .catch((err: any) => {
          console.log(`Didn't set HOME root: ${err}`);
   }); 
} else {
   this.nav.setRoot(page.component, params)
   .catch((err: any) => {
          console.log(`Didn't set nav root: ${err}`);
    });
}

Chrome console.log Chrome console.log

PageInterface数据结构 Page Interface

在我导入的类组件键中丢失'HomePage的常量的一部分。 Code that lost component

这是别人经历过的吗?任何建议,或者我没有看到的明显错误。欢呼声。

1 个答案:

答案 0 :(得分:0)

首先,离子版中的导航自版本3.6.0以来(特别是使用制表符)非常错误,它们重构了URL的生成方式(它们现在更具可读性)。正如你已经提到的那样,github上存在许多未解决的问题,这些问题将在未来几周内根据团队进行修复(他们目前非常忙于重构v4 of ionic的整个框架)。

回答有关IonicPage装饰器的问题: 您也可以在不延迟加载页面的情况下使用它: 在主模块app.module.ts中添加以下内容:

imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp, {
      preloadModules: true
    })
],

preloadModules: true告诉离子你想要急切地加载你的页面(而不是懒惰)。 在IonicPage装饰器中,您可以配置启动时加载模块的优先级:

@IonicPage({
  name: 'my-page',
  priority: 'high'
})

对于priority属性,值highlowoff可用。 off表示页面是延迟加载的。您可以在IonicPage装饰器的documentation中找到它。