Ionic2 在开始构造/加载根页面之前加载配置

Ionic2 在开始构造/加载根页面之前加载配置,ionic2,Ionic2,我正在构建一个ionic 2 rc0应用程序。我的根页面取决于启动应用程序之前必须加载的某些配置。我在整个应用程序中使用一个名为Config的提供程序。在构建主页组件之前,如何延迟/等待配置加载。我需要Home的构造函数中的配置。在这种情况下,爱奥尼亚公司是否有类似的预加载模块 这是完成类似任务的最佳地点吗 我的配置模块使用 http.get(../assets/config/config.json) .toPromise() .然后(res=>this.data=res) 将json文件本地加

我正在构建一个ionic 2 rc0应用程序。我的根页面取决于启动应用程序之前必须加载的某些配置。我在整个应用程序中使用一个名为Config的提供程序。在构建主页组件之前,如何延迟/等待配置加载。我需要Home的构造函数中的配置。在这种情况下,爱奥尼亚公司是否有类似的预加载模块

这是完成类似任务的最佳地点吗

我的配置模块使用

http.get(../assets/config/config.json)
.toPromise()
.然后(res=>this.data=res)

将json文件本地加载到我的配置提供程序的数据对象中。app.component.ts中的我的代码触发函数config.loadDefault(),从应用程序的config.json文件加载这些默认设置

应用程序组件.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from 'ionic-native';

import { Home } from '../pages/home/home';
import { Config } from '../providers/config/config';

@Component({
  template: `<ion-nav [root]="rootPage"></ion-nav>`
})
export class LoddenApp {

  public rootPage = Home;

  constructor(
    public platform : Platform,
    public config   : Config
  ){
    // loading config
    config.loadDefault()
      .then(data => {
        console.log(data);
        return config.loadSettingsFromDB();
      })
      .catch(err => {
        console.log("error occured while loading config:");
        console.log(err);
      });


    platform.ready().then(() => {
    ...
    });
  }
}
从'@angular/core'导入{Component};
从“离子角度”导入{Platform};
从“离子本机”导入{StatusBar};
从“../pages/Home/Home”导入{Home};
从“../providers/Config/Config”导入{Config};
@组成部分({
模板:``
})
出口级洛德纳普{
公共rootPage=Home;
建造师(
公共平台:平台,
公共配置:config
){
//加载配置
config.loadDefault()
。然后(数据=>{
控制台日志(数据);
return config.loadSettingsFromDB();
})
.catch(错误=>{
log(“加载配置时出错:”);
控制台日志(err);
});
platform.ready()。然后(()=>{
...
});
}
}

我不确定这是最好的方法。但是一个选择是在数据加载后隐藏初始屏幕

import {Splashscreen} from 'ionic-native';

constructor(
    public platform : Platform,
    public config   : Config
  ){

    platform.ready().then(() => {
      // loading config
      config.loadDefault()
       .then(data => {
        console.log(data);
        return config.loadSettingsFromDB();
      })
      .catch(err => {
        console.log("error occured while loading config:");
        console.log(err);
      });
      Splashscreen.hide();
    });
  }

我不确定这是最好的方法。但是一个选择是在数据加载后隐藏初始屏幕

import {Splashscreen} from 'ionic-native';

constructor(
    public platform : Platform,
    public config   : Config
  ){

    platform.ready().then(() => {
      // loading config
      config.loadDefault()
       .then(data => {
        console.log(data);
        return config.loadSettingsFromDB();
      })
      .catch(err => {
        console.log("error occured while loading config:");
        console.log(err);
      });
      Splashscreen.hide();
    });
  }

通过在我得到承诺响应之前不定义rootPage,我可以阻止主页的构造函数被触发

...
export class LoddenApp {
  public rootPage : any; // hold back
  constructor(
...
然后在Then()块中,我可以设置我的应用程序的根页面

this.rootPage = Home; // Home is the Homepage component

通过在我得到承诺响应之前不定义rootPage,我可以阻止主页的构造函数被触发

...
export class LoddenApp {
  public rootPage : any; // hold back
  constructor(
...
然后在Then()块中,我可以设置我的应用程序的根页面

this.rootPage = Home; // Home is the Homepage component


但这如何防止在加载配置之前加载rootPage?这只是一种在屏幕上显示加载微调器的方法。。。对于在删除注释之前使用LoadingController的方法:),但这如何防止在加载配置之前加载rootPage?这只是一种在屏幕上显示加载微调器的方法。。。对于删除评论之前使用LoadingController的方法:)我还没有在我的应用程序中使用splashscreen(目前)。我的根页面(主页)的构造函数是否会等到splashscreen被隐藏?Bay使用splashscreen我只是想在使用我的实际主页之前使用一个页面,对吗?@sami_analyst,虽然你没有使用splashscreen,但ionic将包括默认的splashscreen,显示它的目的是让用户等待应用程序加载。但要确保这不会占用太多时间。你是不是想把Splashscreen.hide()放在我重新热爱的承诺的then块中?但是,这仍然不起作用,因为主页不会等到Splashscreen隐藏后,才会触发构造函数,然后在then块中使用它。它会起作用的。您的主屏幕构造器甚至可以在splashscreen可见性上运行。确保在config.xml中使用,但这正是我不想要的,我想在加载配置后加载主页的构造函数。。。我想用config.loadDefault()开始加载配置,而我在加载配置时,splashscreen可以显示,直到至少配置就绪,然后我想启动主页的构造函数,因为这取决于配置。我的应用程序中(目前)没有使用splashscreen。我的根页面(主页)的构造函数是否会等到splashscreen被隐藏?Bay使用splashscreen我只是想在使用我的实际主页之前使用一个页面,对吗?@sami_analyst,虽然你没有使用splashscreen,但ionic将包括默认的splashscreen,显示它的目的是让用户等待应用程序加载。但要确保这不会占用太多时间。你是不是想把Splashscreen.hide()放在我重新热爱的承诺的then块中?但是,这仍然不起作用,因为主页不会等到Splashscreen隐藏后,才会触发构造函数,然后在then块中使用它。它会起作用的。您的主屏幕构造器甚至可以在splashscreen可见性上运行。确保在config.xml中使用,但这正是我不想要的,我想在加载配置后加载主页的构造函数。。。我想开始用config.loadDefault()加载配置,而在我加载配置时,屏幕上的喷溅可以看到,直到至少配置就绪,然后我想启动我主页的构造函数,因为它取决于向我提供解决方案的ConfigsHanks。我做了更多的工作:loadSettingsFromDB在数据真正加载时发布事件(has DB操作是异步操作)。我订阅此活动,以便在一切完成时设置根页面。此活动非常有效!感谢@sami_分析师分享!这是一个简洁的解决方案谢谢你为我提供解决方案。我做了更多的工作:loadSettingsFromDB在数据真正加载时发布事件(has DB操作是异步操作)。我订阅此活动,以便在一切完成时设置根页面。此活动非常有效!感谢@sami_分析师分享!这是一个巧妙的解决方案