如何使IonViewDidLoad在事件订阅后运行

时间:2018-11-06 14:18:59

标签: javascript angular ionic-framework

嗨,我正在使用事件通过ionic将页面1中的数据传递给页面2。

在第2页中,我使用下面的代码来订阅从第1页传递的数据。

events.subscribe('restoProfile:selected', (restoData) => {
        this.restoData = restoData;
        console.log(this.restoData);
      });

上面一行的console.log通过在控制台日志上显示数据来正常工作。

问题是,我在this.restoData中将IonViewDidLoad用于另一个函数,但是此函数表明this.restoData中的内容未定义。

我尝试添加一个调用console.log(this.restoData)的按钮,并且this.restoData中的内容已正确记录。

我想IonViewDidLoad在预订事件之前运行。

如何让IonViewDidLoad在订阅事件后运行之后

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我不太确定您要完成什么目标,只需编写一些代码即可。

我想在事件触发并且第二页正在加载时会有一些不一致之处。

我不知道这是否适用于您的情况,但我想说一个restoData provider-如果这是一组经常检索和更改的数据,否则为data.provider与初始化成员restoData: Resto[] = [](或其他任何成员)一起使用。

触发事件时,您将对提供程序上的数据进行突变,并且当您访问页面时,您已经注入了提供程序(仅在app.module.ts中导入,因此导入了1个实例)并直接显示数据来自提供商。

答案 1 :(得分:1)

您可以创建一个函数“ runthefunctionyouwant”,而不是执行此操作,将要执行的代码放入事件并将其放入ionviewdidload中。事件订阅后,将restodata传递到“ this.restoData”后,调用函数“ runthefunctionyouwant”

ionViewDidLoad(){
    events.subscribe('restoProfile:selected', (restoData) => {
            this.restoData = restoData;
            console.log(this.restoData);
            this.runTheFunctionYouWant();
});
}

runTheFunctionYouWant(){
//code that you want to run
}

希望这会有所帮助