Skip to content

Commit d892b64

Browse files
committed
将数据提供重构为一种服务
1 parent 2392001 commit d892b64

File tree

9 files changed

+111
-34
lines changed

9 files changed

+111
-34
lines changed

src/app/app.component.js

Lines changed: 17 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/app.component.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/app.component.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,7 @@
1-
import { Component } from '@angular/core';
1+
import { Component, OnInit } from '@angular/core';
22

33
import { Hero } from './hero';
4-
5-
const HEROES: Hero[] = [
6-
{ id: 11, name: 'Mr. Nice' },
7-
{ id: 12, name: 'Narco' },
8-
{ id: 13, name: 'Bombasto' },
9-
{ id: 14, name: 'Celeritas' },
10-
{ id: 15, name: 'Magneta' },
11-
{ id: 16, name: 'RubberMan' },
12-
{ id: 17, name: 'Dynama' },
13-
{ id: 18, name: 'Dr IQ' },
14-
{ id: 19, name: 'Magma' },
15-
{ id: 20, name: 'Tornado' }
16-
];
4+
import { HeroService } from './hero.service';
175

186

197

@@ -77,14 +65,26 @@ const HEROES: Hero[] = [
7765
margin-right: .8em;
7866
border-radius: 4px 0 0 4px;
7967
}
80-
`]
68+
`],
69+
providers: [HeroService],
8170
})
8271

83-
export class AppComponent {
72+
export class AppComponent implements OnInit {
8473
title = 'Tour of Heroes';
8574
selectedHero: Hero;
86-
heroes = HEROES;
75+
heroes: Hero[];
76+
8777
onSelect(hero: Hero): void{
8878
this.selectedHero = hero;
8979
}
80+
constructor(private heroService: HeroService){}
81+
82+
getHeroes(): void{
83+
this.heroService.getHeroesSlowly().then(heroes => this.heroes = heroes);
84+
}
85+
86+
ngOnInit(): void{
87+
this.getHeroes();
88+
}
89+
9090
}

src/app/hero.service.js

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/hero.service.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/hero.service.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Injectable } from '@angular/core';
2+
import { Hero } from './hero';
3+
import { HEROES } from './mock-heroes';
4+
5+
@Injectable()
6+
export class HeroService{
7+
getHeroes(): Promise<Hero[]>{
8+
return Promise.resolve(HEROES);
9+
}
10+
11+
getHeroesSlowly(): Promise<Hero[]> {
12+
return new Promise(resolve => {
13+
// Simulate server latency with 2 second delay
14+
setTimeout(() => resolve(this.getHeroes()), 2000);
15+
});
16+
}
17+
}

src/app/mock-heroes.js

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/mock-heroes.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/mock-heroes.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Hero } from './hero';
2+
3+
export const HEROES: Hero[] = [
4+
{ id: 11, name: 'Mr. Nice' },
5+
{ id: 12, name: 'Narco' },
6+
{ id: 13, name: 'Bombasto' },
7+
{ id: 14, name: 'Celeritas' },
8+
{ id: 15, name: 'Magneta' },
9+
{ id: 16, name: 'RubberMan' },
10+
{ id: 17, name: 'Dynama' },
11+
{ id: 18, name: 'Dr IQ' },
12+
{ id: 19, name: 'Magma' },
13+
{ id: 20, name: 'Tornado' }
14+
];

0 commit comments

Comments
 (0)