【发布时间】:2017-05-01 00:18:39
【问题描述】:
我有 home.ts,它正在调用 service.ts 从存储中加载项目。
export class HomePage {
products;
ionViewDidEnter() {
this.products = this.productService.products;
}
ngOnInit(){
this.productService.fetchProducts();
this.products = this.productService.products;
}
}
export class ProductService{
products;
fetchProducts(){
this.storage.get('products') // returns a promise which returns data or error
.then(
(products) => {
// assign to this.expenses only if not null. When first //strt, can be null. If null, assign empty array []
products? this.products = products : this.products = [];
console.log("fetch Products:" + this.products);
return this.products;
})
.catch(
err => console.log(err)
);
}
然后我渲染home.html 中的项目。
问题是,当应用程序启动时,项目不会在第一次显示。但是,如果我导航到另一个屏幕并返回 home.ts,这些项目就会恢复正常。我知道这是因为 ionViewDidEnter 并且可能是第一次, fetchProducts 中的承诺是异步的。但是如何让项目首次在ngOnInit 上列出?
【问题讨论】:
-
谢谢。但在我的情况下,具体的代码是什么?