Javascript 离子3:如何预加载标签?

Javascript 离子3:如何预加载标签?,javascript,angular,ionic-framework,ionic2,preload,Javascript,Angular,Ionic Framework,Ionic2,Preload,在这种特殊情况下,我绝对需要确保在用户进入应用程序之前定义document.queryselectoral('.scroll content')[0],document.queryselectoral('.scroll content')[1],等等。换句话说:我需要预加载选项卡 选项卡的当前行为: doc…定义了所有('.scroll content')[0] doc…All('.scroll content')[1]未定义 doc…All('.scroll content')[2]未定义

在这种特殊情况下,我绝对需要确保在用户进入应用程序之前定义
document.queryselectoral('.scroll content')[0]
document.queryselectoral('.scroll content')[1]
,等等。换句话说:我需要预加载选项卡

选项卡的当前行为:

  • doc…定义了所有('.scroll content')[0]
  • doc…All('.scroll content')[1]
    未定义
  • doc…All('.scroll content')[2]
    未定义
  • doc…All('.scroll content')[3]
    未定义
出现这种“状态”的原因是,选项卡页面的内容仅在访问时加载

我期望从选项卡中看到的行为

  • doc…定义了所有('.scroll content')[0]
  • doc…定义了所有('.scroll content')[1]
  • doc…定义了所有('.scroll content')[2]
  • doc…定义了所有('.scroll content')[3]
因此,我需要能够在用户第一次访问标签页之前加载标签页


不幸的是,爱奥尼亚团队确实在beta 12中删除了标签的预加载,因为据推测AOT编译足够快,我们“不需要”预加载标签 请注意,我是根据自己的经验说话的

背景: 我遇到了非常类似的方法,我使用一些外部引擎在页面上呈现一些内容,需要在一个角度组件中引用它生成的HTML。问题是将代码放在view init lifecycle函数之后是不够的

可能的解决方案:

  • 您可以使用
    setTimeout
    等待HTML呈现
  • 您可以点击
    ngDoCheck
    并检查HTML是否已呈现(如果document.querySelector为truthy,则您知道可以移动到脚本)
  • 点击“ngDoCheck”代价高昂(初始加载后,您的支票仍将被取消)。因此,最好结合使用while循环和setTimeout。请参见下面的伪代码:
  • -


    请注意,我是根据自己的经验说话的

    背景: 我遇到了非常类似的方法,我使用一些外部引擎在页面上呈现一些内容,需要在一个角度组件中引用它生成的HTML。问题是将代码放在view init lifecycle函数之后是不够的

    可能的解决方案:

  • 您可以使用
    setTimeout
    等待HTML呈现
  • 您可以点击
    ngDoCheck
    并检查HTML是否已呈现(如果document.querySelector为truthy,则您知道可以移动到脚本)
  • 点击“ngDoCheck”代价高昂(初始加载后,您的支票仍将被取消)。因此,最好结合使用while循环和setTimeout。请参见下面的伪代码:
  • -


    如果您使用的是AOT,并且ionic团队是正确的(速度足够快),那么我看不出您为什么要预加载选项卡。也许是因为你想获取一些数据


    如果加载数据是这样的话,您可以在tabService中获取数据,然后在每个选项卡中注入这些数据。

    如果您使用的是AOT,并且ionic团队是正确的(速度足够快),我看不出您为什么要预加载选项卡。也许是因为你想获取一些数据


    如果是加载数据,您可以在tabService中获取数据,然后将其注入每个选项卡。

    您是否尝试过不使用Ionic Page(延迟加载)?是的,我尝试过…:/您是否尝试过不使用Ionic页面(延迟加载)?是的,我尝试过…:/你好谢谢你的回答。不幸的是,它在这种情况下不起作用。我将在我的问题中添加进一步的解释。嗨!谢谢你的回答。不幸的是,它在这种情况下不起作用。我将在我的问题中添加进一步的解释。嗨!谢谢你的回答。这是一个纯粹的动画问题。我正在为两个选项卡之间的标题设置动画。标题的背景不透明度为50%。第一次,即使使用AOT,选项卡加载速度也足够慢,以至于两个页面的两个标题重叠在一起,在一秒钟内会发出难看的白色闪光。加载选项卡时不会发生这种情况,因此,如果未加载所选选项卡,我将通过在ionViewWillLeave上隐藏标题来解决此问题。我宁愿只预加载选项卡x)如果您使用延迟加载,您可以尝试以下方法:这是实际设备上的问题吗?或者是在模拟器上?在这个设备上,iOS 11(iPhone 6S)在这样一个功能强大的设备上一整秒钟的闪存让我怀疑你在其他地方有问题。你能试着把你的应用程序的大部分注释掉,看看它是否有区别吗?嗨!谢谢你的回答。这是一个纯粹的动画问题。我正在为两个选项卡之间的标题设置动画。标题的背景不透明度为50%。第一次,即使使用AOT,选项卡加载速度也足够慢,以至于两个页面的两个标题重叠在一起,在一秒钟内会发出难看的白色闪光。加载选项卡时不会发生这种情况,因此,如果未加载所选选项卡,我将通过在ionViewWillLeave上隐藏标题来解决此问题。我宁愿只预加载选项卡x)如果您使用延迟加载,您可以尝试以下方法:这是实际设备上的问题吗?或者是在模拟器上?在这个设备上,iOS 11(iPhone 6S)在这样一个功能强大的设备上一整秒钟的闪存让我怀疑你在其他地方有问题。你能试着注释掉你的应用程序的大部分内容,看看它是否有什么不同吗?
    ngOnViewInit() {
      let isReady = false;
      do {
        if (document.querySelectorAll('.scroll-content').length > 0) {
          isReady = true;
        }
      while (!isReady);
      this.runMyCodeThatNeedsThePagePreloaded();
    }