【发布时间】:2020-09-10 21:37:33
【问题描述】:
我有一个 Ionic Angular 应用程序,它在每次视图更改时调用 API 并将值存储在 ionic 存储中。
每个页面都有一个“标题”组件,应该显示存储中的这个值。
在ngOnInit(){} 内部,我从存储中获取值并更新值。但是,它只在每个页面视图中执行一次。所以如果我查看主页,例如,转到第2页,然后返回主页,代码将不会重新执行。
我想这是因为当您更改视图时页面实际上并没有卸载,因此没有理由“重新构建”。
constructor(){} 仅在该视图的第一个构造上运行
ngOnInit() {} 只运行该视图的第一个初始化
ionViewDidLoad() {} 无法运行,因为它不是视图,而是离子页面生命周期挂钩
我基本上是在寻找一种方法来调用 API,将值存储在离子存储中,并在每次页面更改时更新标题中的值。
我一直认为这可以通过 Observables 实现,但我不确定这将如何用于离子存储。
或者甚至使用离子视图生命周期钩子之一从视图中的存储中获取值并将其作为道具传递到标题中,但这看起来很混乱。
我使用存储的原因是余额在其他地方使用,而不仅仅是在标题中,如果它只是在存储中可用,它可以节省我多次调用。
任何建议表示赞赏
export class HeaderComponent {
balance = 0.00;
constructor(
private storage: Storage,
) { }
async ngOnInit() {
this.storage.get('balance').then(data => {
this.balance = data;
});
}
}
【问题讨论】:
-
ngOninit将在您每次返回到后面时运行。放置一个 console.log 语句并检查。顺便问一下async有什么用? -
您可以在您的应用组件中订阅路由器事件更改,并在每次路由更改时执行您想要的逻辑。
标签: javascript angular ionic-framework ionic4 ionic5