在许多教程中,一些数据(例如待办事项列表)存储在服务中。这是好习惯吗?我是Angular 2的新手,我想学习代码的正确性。
一些代码示例:
@Injectable()
export class JsonRestService {
jsonObject = {};
jsonContent = {};
constructor(private http:Http) {
this.getXmlInJson()
.subscribe(
data => this.startGeneratingHtmlTemplateProcess(data),
error => console.log(error + " - B??d pobrania jsona")
);
}
getXmlInJson() {
let url = "http://localhost:8080/xml";
return this.http.get(url);
}
public convertRestJsonToObject$() {
this.getXmlInJson()
.subscribe(
data => this.startGeneratingHtmlTemplateProcess(data.json),
error => console.log(error + " - B??d pobrania jsona")
);
}
private startGeneratingHtmlTemplateProcess(data) {
this.jsonObject = JSON.parse(JSON.parse(JSON.stringify(data))._body);
this.jsonContent = JSON.parse(JSON.stringify(data._body));
console.log(this.jsonObject);
console.log("Json:");
console.log(this.jsonContent);
}
showObjectInConsole() {
console.log("Wyzwolone prze przycisk: ");
console.log(this.jsonObject);
}
}
Run Code Online (Sandbox Code Playgroud)
尽管服务通常用于通过与数据源进行交互来检索/更新数据,但它们在存储数据时也非常方便。例如,如果您需要检索大量数据,则可以将其缓存在服务中:
@Injectable()
export class DataService{
mydata: Array<string>[];
constructor(private http:Http){}
loadData(): Observable<string[]> {
if (this.mydata){
return Observable.from(this.mydata); // return from cache
} else
{
return this.http.get("./assets/LargeDataSet.json")
.map(res => res.json())
.do(data => this.mydata = data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,大数据集的检索将在loadData()的第一次调用时发生,而随后的调用将快速返回数据,而无需创建费时的http.get()。由于服务可以是单例,因此许多组件可以利用使用服务中缓存的数据的优势。您还可以将应用程序状态存储在单例服务中。
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |