【发布时间】:2016-02-25 04:13:56
【问题描述】:
您好,我是 Angular 的新手,我一直在努力学习 Angular 2,所以要温柔:)。 我一直在尝试使用 WP API 插件将 WordPress 用作我的数据 API。并且到目前为止能够从 WordPress 获取帖子。下面是我的数据服务代码。
import {Injectable} from "angular2/core";
import {Http, Response} from 'angular2/http';
import {Observable} from 'rxjs/Rx';
import {PostInterface} from './data.interface';
import {Headers} from "angular2/http";
import {RequestOptions} from "angular2/http";
@Injectable()
export class DataService{
private _dataURL : string = 'http://localhost/wordpress/?rest_route=/wp/v2/posts';
posts : PostInterface [];
post : PostInterface;
errorMessage : string;
constructor(private http:Http){}
getPosts():Observable<any[]>{
//return this.http.get(this._dataURL).map((res:Response) => res.json());
return this.http.get(this._dataURL)
.map(res=>res.json())
//.do(data => console.log(data)) // eyeball results in the console
.catch(this.handleError);
}
//todo fix search
getPost(filterid:number):Observable<any[]>{
//filterid is the id of a specific post
this._dataURL = this._dataURL + '/' + filterid;
return this.http.get(this._dataURL)
.map(res => res.json())
.catch(this.handleError);
}
private handleError (error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
在代码中,我使用getPosts() 方法获取所有帖子数据,但我也有一个getPost() 方法来获取特定帖子。
我想知道是否可以使用getPosts() 获取的JSON 数据并在getPost() 方法中再次使用它。目前getPost() 所做的是再次调用http.get 我不想一次又一次地发出http.get 请求。
我希望getPosts() 发出一个请求,获取数据并存储在某处,以便其他方法可以使用数据并进行特定操作。
谢谢
【问题讨论】:
-
如果你想将数据存储在某个地方,那么就存储它。那有什么问题。您可以使用变量将所有帖子保存为数组或地图,然后您可以从那里使用它。您还可以使用 localstorage 来缓存数据,这样您就不必在每次需要数据时都请求它。
标签: json wordpress http service angular