2017-02-17 2 views
3

Ich habe eine Funktion, die Objekt jedes Mal, wenn es aufgerufen wird, möchte ich dieses Objekt in einem Array speichern. Aber wenn ich das angekommene Objekt in das Array schiebe, wird das vorherige Objekt überschrieben. Wie speichere ich die Objekte, ohne jedes Mal, wenn ich in der Funktion bin, die vorherigen zu überschreiben, so dass alle Objekte in der Funktion for() ausgedruckt werden.Meine Objekte im Array überschrieben

drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) { 
    var container = document.getElementById('timeLine'); 
    var result: any[] = []; 
     result.push({ "_id": this.idcalbuscador, "title": nom_cal }); 
    for (let i of result) { 
    console.log(i); 
     alert(i); 
    } 
} 

Antwort

4

Ihr result Variable ist lokal auf die drawtimeline Funktion. Wenn diese Funktion beendet ist, wird die Variable result gelöscht. Wenn diese Funktion erneut aufgerufen wird, wird ein neues result-Array zugewiesen, das so aussieht, als ob Sie das alte Objekt löschen, das im Array gespeichert ist. Jedes Mal, wenn Sie die Funktion ausführen, drucken Sie ein separates Array mit dem einzelnen Objekt, das Sie gerade gedrückt haben.

Die Lösung besteht darin, die Variable result aus der Funktion in den äußeren Bereich zu ziehen. Die Details hängen davon ab, ob diese Funktion Teil eines Moduls, einer Klasse oder eines Nackten ist. Typischerweise wird es wie folgt aussehen:

var result: any[] = []; 
drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) { 
    var container = document.getElementById('timeLine'); 

    result.push({ "_id": this.idcalbuscador, "title": nom_cal }); 
    for (let i of result) { 
     console.log(i); 
     alert(i); 
    } 
} 

Wenn Sie in einer Klasse sind, müssen Sie this.result

verwenden
Verwandte Themen