2016-07-28 9 views
0

Ich versuche, die Aufzeichnungen von meinem db zu erhalten, ich schrieb die observables und mit dem folgenden Code bekomme ich keine Aufzeichnungen. Kann jemand bitte Hilfe vorschlagen.Wie man Daten von DB mit Observables holt

meine Komponente,

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(); }) 
} 
    } 

Ich versuche, die Datensätze aus meiner db zu bekommen, schrieb ich die Observablen und mit dem folgenden Code i immer bin nicht records.Can jemand bitte helfen vorschlagen.

Antwort

0

UPDATE

In Ihrem Kommentar auf meine Antwort, ich glaube, Sie fragen, was der Grund dafür ist ein beobachtbares zu verwenden. In Ihrem spezifischen Code gibt es keinen Grund, einen zu verwenden, abgesehen von der Tatsache, dass das Http-Objekt Observables zurückgeben soll. Ich sollte jedoch darauf hinweisen, dass Sie Ihren Http-Aufruf nicht optimal umsetzen, wenn es um gute Praktiken geht.

Ihr Http-Aufruf sollte wirklich in einem Service statt direkt in Ihrer Komponente sein. Die Komponente sollte das Observable in Ihrem Service abonnieren. Hier ist eine Plunker, die zeigt, wie man ein Observable mit einem Service nutzt.

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); 
    }); 
    } 
} 

Hier ist eine wirklich gute tutorial, die ich werden verwendet, um Bekanntes wie Observable zu nutzen.


Sieht aus, als ob Sie nur vergessen, Ihre "Details" Variable auf die Ergebnisse zurückgeben. Ich denke, du musst nur deine Subscribe-Funktion so einstellen, dass sie so aussieht (das geht davon aus, dass dein php-Anruf funktioniert).

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

Danke Dan, funktionierte es dann, was der Zweck ist es, den Schritt beobachtbare MMR

+0

@nlr_p der Verwendung von - ich glaube, Sie im Kommentar zu fragen wurden, warum die Notwendigkeit für eine beobachtbare. Ich habe die Antwort aktualisiert, um das widerzuspiegeln. –

Verwandte Themen