Woocommerce Ionic 2手动重新加载以获取数据

Woocommerce Ionic 2手动重新加载以获取数据,woocommerce,ionic2,Woocommerce,Ionic2,我正在使用服务从woocommerce获取产品。在服务的构造函数中,我进行了一个HTTP get调用,该调用获取产品并订阅本地数据变量。然后我在服务中创建了一个函数getData(),该函数将获取的数据返回到myPage。然后从myPage,从我的组件页面的构造函数调用getData()函数,并将其分配给本地产品数组 问题是,当最初加载我的页面时,我的服务构造函数中的HTTP get调用尚未接收/订阅数据,因此getData()函数调用返回空数组,我必须在服务中接收数据后手动重新加载组件页面,以

我正在使用服务从
woocommerce
获取产品。在服务的构造函数中,我进行了一个HTTP get调用,该调用获取产品并订阅本地数据变量。然后我在服务中创建了一个函数
getData()
,该函数将获取的数据返回到
myPage
。然后从
myPage
,从我的组件页面的构造函数调用
getData()
函数,并将其分配给本地产品数组
问题是,当最初加载我的页面时,我的服务构造函数中的HTTP get调用尚未接收/订阅数据,因此
getData()
函数调用返回空数组,我必须在服务中接收数据后手动重新加载组件页面,以获取我页面中的数据

知道我做错了什么吗?以及可能的解决方案
谢谢

这是我的密码

 Service is fetching data from woocommerce.


 constructor(public http: Http) {
 console.log("itemservice constructor called")
 this.http.get(`${this.producturl}`).map(res=><Product[]>res.json()).subscribe(prods =>{
    console.log("inside subscribe");
    this.items=prods;
  });
  getData(){
     return this.items;
  }

根据你的描述,看起来你真的可以从你的服务中获取数据,虽然我不确定你为什么要把逻辑放在构造函数中,但看起来你错过了一些关于Angular的基本概念,这都是关于数据绑定的,因此你的页面/组件应该绑定到可观察的数据,并将自动“更新”获取数据时

我不确定你的意图,但我会这样做,最重要的是观点,注意:从未测试过

 constructor(public http: Http) {
 console.log("itemservice constructor called")
  }

  getData(){
 this.http.get(`${this.producturl}`).map(res=><Product[]>res.json()).subscribe(prods =>{
    console.log("inside subscribe");
    this.items=prods;
  });
视图:



代码胜过文字。建议解决方案很容易。谢谢你的建议。我已经添加了代码,请看一下。我明白你的意思。我应该订阅我的页面而不是服务。
 constructor(public http: Http) {
 console.log("itemservice constructor called")
  }

  getData(){
 this.http.get(`${this.producturl}`).map(res=><Product[]>res.json()).subscribe(prods =>{
    console.log("inside subscribe");
    this.items=prods;
  });
    constructor(public nav: NavController, public categoryService: 
    CategoryService, public itemService: ItemService, public loadingCtrl: 
    LoadingController) 
    {
 this.itemService.getData();
    }
<div  *ngFor="let item of itemService.items"  >

</div>