2016-07-28 70 views
0

我想從我的數據庫中獲取記錄,我寫了observables和下面的代碼,我沒有得到任何記錄。可以有人請建議幫助。如何從觀察數據庫中獲取數據

我的組件,

import { Injectable } from '@angular/core'; 
    import {Component} from '@angular/core'; 
    import {Http, Response, Headers} from '@angular/http'; 
    import {Observable} from 'rxjs/Observable'; 
    import { IDetails } from './details'; 
@Component({ 

    templateUrl: './components/search/search.html', 

}) 
@Injectable() 
export class Search { 

    details:IDetails[]; 

     constructor(public http: Http) { 
     this.http = http; 
     } 

    submit(id):any{ 


     var headers = new Headers(); 
     var id = localStorage.getItem('social_id') 
     headers.append('Content-Type','application/x-www-form-urlencoded') 
     this.http.get('http://localhost/a2server/index.php/profile/search/'+id,{headers:headers}) 
     .subscribe(
     response => { <IDetails[]> response.json(); }) 
} 
    } 

我想從我的數據庫獲取的記錄,我寫了觀測,並用下面的代碼我沒有得到任何records.Can有人請建議幫助。

回答

0

UPDATE

在給我的回答您的意見,我相信你問什麼是使用可觀察到的原因。在你的特定代碼中,除了Http對象被設計爲返回Observables之外,沒有什麼理由使用它。我應該指出,儘管在談到良好的實踐時,你的Http調用並不是最好的。

你的Http調用應該真的在服務中,而不是直接在你的組件中。組件應該在您的服務中訂閱Observable。這是一個Plunker,演示瞭如何利用帶有服務的Observable。

export class ComponentOne{ 
    private _videoID:number; 
    private _searchedItem:IVideo; 
    constructor(private _videoService:VideoService){ 
    this._videoID = 0; 
    this._searchedItem = {}; 
    } 

    componentClick():void{ 
    this._videoService.getVideo(this._videoID).subscribe((data: IVideo) => { 
    console.log(data); 
    }); 
    } 
} 

這是一個非常好的tutorial,我曾經熟悉如何利用Observables。


看起來你只是忘了將你的「細節」變量設置爲返回結果。我認爲你只需要調整你的訂閱功能看起來像這樣(這假定你的PHP調用正在工作)。

response => { this.details = <IDetails[]> response.json(); }) 
+0

謝謝丹,它的工作又是什麼使用步驟可觀察 MMR

+0

@nlr_p的目的 - 我想你在評論中問爲什麼需要一個觀察的。我已經更新了答案以反映這一點。 –

相關問題