Angular 如何在DOM上显示loader/GIF/text,直到Ionic 2中没有从JSON API获取数据为止?
在从JSON API加载数据之前,我想在屏幕上显示加载器、GIF或文本。请以最简单的方式查看下面的代码Angular 如何在DOM上显示loader/GIF/text,直到Ionic 2中没有从JSON API获取数据为止?,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,在从JSON API加载数据之前,我想在屏幕上显示加载器、GIF或文本。请以最简单的方式查看下面的代码listproducts.ts使用listproduct.service.ts import { Injectable } from '@angular/core'; import { Headers, Http, HttpModule ,Response } from '@angular/http'; import 'rxjs/add/operator/map'; @Injectable()
listproducts.ts
使用listproduct.service.ts
import { Injectable } from '@angular/core';
import { Headers, Http, HttpModule ,Response } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class ListproductService{
private _url:string = "http://funiks.com/qbook/api/productmasterjson.php";
constructor(private _http : Http){}
listProduct(){
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this._http.post(this._url,{headers:headers})
.map((response:Response) => response.json());
}
}
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { ListproductService } from './listproduct.service';
import { DeleteProductService } from './deleteProduct.service';
import { ProductservicemasterPage } from '../productservicemaster/productservicemaster';
import { Subscription } from 'rxjs';
@IonicPage()
@Component({
selector: 'page-listproduct',
templateUrl: 'listproduct.html',
providers : [ ListproductService,DeleteProductService ],
})
export class ListproductPage implements OnInit{
public list = [];
constructor(private _listProduct : ListproductService,private _deleteProduct : DeleteProductService,
public navCtrl: NavController,public navParams: NavParams) {}
ngOnInit() {
this._listProduct.listProduct().subscribe(data => {
this.list = data;
console.log(data[0].NAME);
});
}
}
下面是我的listproduct.service.ts
import { Injectable } from '@angular/core';
import { Headers, Http, HttpModule ,Response } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class ListproductService{
private _url:string = "http://funiks.com/qbook/api/productmasterjson.php";
constructor(private _http : Http){}
listProduct(){
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this._http.post(this._url,{headers:headers})
.map((response:Response) => response.json());
}
}
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { ListproductService } from './listproduct.service';
import { DeleteProductService } from './deleteProduct.service';
import { ProductservicemasterPage } from '../productservicemaster/productservicemaster';
import { Subscription } from 'rxjs';
@IonicPage()
@Component({
selector: 'page-listproduct',
templateUrl: 'listproduct.html',
providers : [ ListproductService,DeleteProductService ],
})
export class ListproductPage implements OnInit{
public list = [];
constructor(private _listProduct : ListproductService,private _deleteProduct : DeleteProductService,
public navCtrl: NavController,public navParams: NavParams) {}
ngOnInit() {
this._listProduct.listProduct().subscribe(data => {
this.list = data;
console.log(data[0].NAME);
});
}
}
和listproduct.ts
import { Injectable } from '@angular/core';
import { Headers, Http, HttpModule ,Response } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class ListproductService{
private _url:string = "http://funiks.com/qbook/api/productmasterjson.php";
constructor(private _http : Http){}
listProduct(){
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this._http.post(this._url,{headers:headers})
.map((response:Response) => response.json());
}
}
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { ListproductService } from './listproduct.service';
import { DeleteProductService } from './deleteProduct.service';
import { ProductservicemasterPage } from '../productservicemaster/productservicemaster';
import { Subscription } from 'rxjs';
@IonicPage()
@Component({
selector: 'page-listproduct',
templateUrl: 'listproduct.html',
providers : [ ListproductService,DeleteProductService ],
})
export class ListproductPage implements OnInit{
public list = [];
constructor(private _listProduct : ListproductService,private _deleteProduct : DeleteProductService,
public navCtrl: NavController,public navParams: NavParams) {}
ngOnInit() {
this._listProduct.listProduct().subscribe(data => {
this.list = data;
console.log(data[0].NAME);
});
}
}
如何实现这一点?如果我理解您的问题,您可以使用加载微调器显示数据,将代码包装在try/catch/finally块中,并使用微调器替换数据,直到获取数据
import { Component, OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams, LoadingController } from 'ionic-angular';
import { ListproductService } from './listproduct.service';
import { DeleteProductService } from './deleteProduct.service';
import { ProductservicemasterPage } from '../productservicemaster/productservicemaster';
import { Subscription } from 'rxjs';
@IonicPage()
@Component({
selector: 'page-listproduct',
templateUrl: 'listproduct.html',
providers : [ ListproductService,DeleteProductService ],
})
export class ListproductPage implements OnInit{
public list = [];
loading:any;
constructor(private _listProduct : ListproductService,private _deleteProduct : DeleteProductService,
public navCtrl: NavController,public navParams: NavParams, public loadingCtrl: LoadingController) {
this.loading = this.loadingCtrl.create({
content: 'Please wait...'
});
}
ngOnInit() {
this.loading.present();
this._listProduct.listProduct().subscribe(data => {
this.list = data;
console.log(data[0].NAME);
this.loading.dismiss();
});
}
}
也为微调器设置一个布尔值,并用数据替换微调器
showSpinner: boolean = true;
HTML
{{item.NAME}
打字稿
try {
this.http.get<T>(this.apiUrl).subscribe(data=> {
this.list = data;
});
}
catch (e) {
console.log(e);
}
finally {
this.showSpinner = false; //You now have the response, so hide the spinner.
}
试试看{
this.http.get(this.apiUrl).subscribe(数据=>{
this.list=数据;
});
}
捕获(e){
控制台日志(e);
}
最后{
this.showSpinner=false;//您现在有了响应,因此隐藏微调器。
}
您能指导我如何使用自定义gif吗