在重新加载页面

时间:2017-10-04 11:13:15

标签: javascript angular ionic-framework promise storage

我正在尝试从存储中“获取”一个数组,将其保存到MaschinenArray并生成一个离子列表。我唯一的问题是,我必须在“离子服务”命令之后重新加载页面一次,否则它会以Maschinen = null为例。

我认为如果此函数是异步的并且之前会加载HTML可能会出现问题,但如果我稍后通过按钮触发事件,它仍会显示null

我在构造函数上面启动了数组:

export class MaschinenParkPage {
maschinenArray : Maschine[] = [];

constructor(private menu: MenuController, public alertCtrl: AlertController, public navCtrl: NavController, private storage: Storage) {


    this.storage.get('maschinen').then((buffer) => {

        this.maschinenArray = buffer;
    });

有什么想法吗?或者构造函数可能是初始化某些变量的错误位置?

2 个答案:

答案 0 :(得分:0)

你真的需要声明那个数组吗?

如果您已将其正确存储在存储中,则可以将对象数组检索为

export class MaschinenParkPage {
maschinenArray : any;

constructor(private menu: MenuController, public alertCtrl: AlertController, public navCtrl: NavController, private storage: Storage) {


    this.storage.get('maschinen').then((buffer) => {

        this.maschinenArray = buffer;
        console.log(this.maschinenArray);
    });

我已经在我的代码中写过这样的东西并且工作得非常好。 您可以进行chrome检查(按Ctrl + Shift + I组合)并检查console.log

更新: 还可以去chrome检查 - >应用程序选项卡 - > IndexedDB找到' maschinen'存储。检查一下。

答案 1 :(得分:0)

是的,现在我记得我猜的问题。我有一个类似的问题,我想登录并根据登录详细信息显示数据。

  1. 首先我使用了location.reload();登录后重新加载整个应用程序,这是不好的。

  2. 然后我发现Events from ionic angular解决了我的问题。你可以试试这个。 示例代码是,

  3. 在我订阅的侧边栏控制器中

      this.events.subscribe('user:login', () => {
          this.ngOnInit();
        });
    

    在我的登录控制器中

    this.storage.ready().then(() => {
          this.storage.set('loginData', response).then(()=>{
            this.events.publish('user:login');
          });
        });
    

    根据我的代码,我从ngOnInit中的存储中检索数据。 希望这会有所帮助。