Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在ionic2中保留来自服务的数据_Angular_Ionic Framework_Ionic2 - Fatal编程技术网

Angular 在ionic2中保留来自服务的数据

Angular 在ionic2中保留来自服务的数据,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,我想保留ionic2中服务的数据。现在,每次从API加载数据时,我不想每次用户进入视图时都调用它 public getUpcomingShoots(){ var json = JSON.stringify({ }); var headers = new Headers(); headers.append("Accept", 'application/json'); headers.append('Content-Type', 'a

我想保留ionic2中服务的数据。现在,每次从API加载数据时,我不想每次用户进入视图时都调用它

public getUpcomingShoots(){

        var json = JSON.stringify({ });
        var headers = new Headers();
        headers.append("Accept", 'application/json');
        headers.append('Content-Type', 'application/json' );
        let options = new RequestOptions({ headers: headers });

        return this.http.post(url, json, options)
        .map(data => data.json());

  }
我的职能是:

getUpcomingShoots (){
    this.showLoading();
    this.mainService.getUpcomingShoots().subscribe(success => {


      if(success.status == 1){
        this.loading.dismiss();
        console.log(success);

        if(success.data.length == 0 ){
          this.noUpcomingEvents = true;
        }else{
          this.noUpcomingEvents = false;
        }

        this.upcomingEvents = success.data;

      }else{
        this.loading.dismiss();
        console.log(success);

      }
    },
    error => {
      console.log( error);
    });
  }

这取决于你想要什么。现在,每次用户打开视图时都会获取数据

解决这个问题的最佳方法可能是将调用移动到ionViewDidLoad生命周期事件中。从文档中:

ionViewDidLoad:加载页面后运行。此事件在创建每个页面时仅发生一次。如果页面离开但被缓存,则在后续查看时不会再次触发此事件。ionViewDidLoad事件是放置页面设置代码的好地方。

class MyPage {
  ionViewDidLoad() {
    // Add your API call here
  }
}
您可以在此处阅读更多信息:


您可能仍然希望向服务添加某种缓存,在一段时间内返回缓存的值,除非您明确强制刷新。

ionViewDidLoad()每次进入页面时都会调用,我希望函数调用一次,知道吗?就像我说的,然后您应该使用缓存。加载页面时,需要从某处获取数据。否则它将是完全空的,并且不会显示任何内容。但是,如果您真的只想调用该函数一次,您可以将其移动到app.component.ts,或者在再次调用之前检查是否已调用该函数。