【问题标题】:Ionic Never loads api dataIonic 从不加载 api 数据
【发布时间】:2017-11-27 02:00:51
【问题描述】:

我设置了一个离子加载屏幕,以在应用程序从我正在使用的 API 端点加载数据时运行。问题是离子应用程序永远不会关闭加载屏幕并显示数据。当我检查离子调用之外的 url 时,json 数据已经加载。我不确定为什么它从未在应用程序中被调用。

下面是调用数据的页面:

import { Component } from '@angular/core';

import { NavController, LoadingController } from 'ionic-angular';
import { RestService } from '../../providers/rest-service/rest-service';

@Component({
  selector: 'page-all-patients',
  templateUrl: 'all-patients.html',
  providers: [RestService]
})
export class AllPatientsPage {
  data: any;
  loading: any;

  constructor(public navCtrl: NavController, public restService: RestService, public loadingCtrl: LoadingController) {

    this.loading = this.loadingCtrl.create({
      content: 'Please wait while data is loading'
    });
    this.getdata();
  }

  getdata() {
    this.loading.present();
    this.restService.getJsonData().subscribe(
      result => {
        this.data=result.data.children;
        console.log("Success: " + this.data);
      },
      err => {
        console.error("Error : " + err);
      },
      () => {
        this.loading.dismiss();
        console.log('getData completed');
     }
   );
 }
}

下面是 RestServices.ts:

import { Http } from '@angular/http';
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';

/*
  Generated class for the RestServiceProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/

@Injectable()
export class RestService {

  constructor(public http: Http) {
    console.log('Hello RestServiceProvider Provider');
  }

  getJsonData() {
    // return Promise.resolve(this.data);

     return this.http.get('url_is_here').map(res => res.json());
   }

}

有谁知道是什么导致了这个问题,是调用 json 数据本身的问题,还是关闭加载屏幕的问题?我很困惑,因为应用程序运行时没有任何错误消息。

【问题讨论】:

  • 如果将this.loading.dismiss(); 放在subscribe 的前两个参数(获取函数和错误处理程序)中会发生什么?他们中的任何一个被叫到吗? (成功还是错误)?
  • @Alexei 它在 err => { 调用上运行
  • 因此,您应该确保在“正常”路径和错误路径上都关闭加载程序。 Sajeetharan 表示应该可以正常工作的模式。

标签: json angular ionic-framework


【解决方案1】:

你的 getData 应该是这样的,

getdata() {
    this.loading.present();
    this.restService.getJsonData().subscribe(
    result => {
        this.data=result.data.children;
        console.log("Success: " + this.data);
        this.loading.dismiss();
    },
    err => {
        console.error("Error : " + err);
        this.loading.dismiss();
    } 
);

【讨论】:

  • 我已经做出了这个改变,但是err 仍然被调用。这是 getJsonData() 方法自动出错,还是在 html 代码中调用数据的方式也导致了错误?
猜你喜欢
  • 2023-03-13
  • 2019-04-19
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 2017-10-22
相关资源
最近更新 更多