我正在尝试在下面的代码中使用 Angular 2 中的 Observables 从 spotify api 获取数据。
我想订阅 input valuechanges 事件,该事件又发送一个请求以使用输入的搜索词进行 spotify。
我是 Observables 的新手,真的很难处理整个嵌套回调/observables 的事情。如果有人能提供关于我如何正确订阅输入框并在用户键入时显示 spotify 结果的代码,我将不胜感激。
@Component({
selector: 'spotify-search',
template: `
<h1>Spotify Search</h1>
<input
class="form-control"
[formControl]="searchBox"
placeholder="Search Spotify artist" />
<div *ngFor=" let artists of results | async">
{{ artists.name }} -- Followers {{artists.followers.total}} -- Popularity {{ artists.popularity }}
</div>
`
})
export class SpotifySearchComponent {
private searchBox = new FormControl();
constructor(private _http: Http){
}
ngAfterViewInit() {
var keyups = this.searchBox
.valueChanges
.debounceTime(200)
.map(searchTerm => {
return this.getResults(searchTerm);
});
var subscription = keyups.subscribe(res => console.log(res));
}
getResults(searchTerm){
return this._http.get('https://api.spotify.com/v1/search?q=' + searchTerm + '&type=artist')
.map(response => {
response.json();
}, error => console.log('Could not load artists'));
}
}