嗨,我正在使用事件通过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在订阅事件后运行之后?
感谢您的帮助
答案 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
}
希望这会有所帮助