2017-03-14 3 views
4

Ich habe eine Reihe von Drug Codes 'BARB', 'HALU', 'METH'. Ich möchte diese Codes durchlaufen und für jedes ein neues Objekt erstellen.Angularjs Laden Objekt in Array über forEach

var saveObj = {}; 
saveObj.SelectedList = []; 
angular.forEach(self.DrugNamesSelected, function(value, key) { 
    //Load Objects into array 
    var newObj = {}; 
    newObj = self.Selected; 
    newObj.FK_CLNT_PERSFK_PER = $routeParams.personId; 
    newObj.DRUG_TYP_CODE = value; 
    saveObj.SelectedList.push(newObj); 
}); 

Das ist, was ich

saveObj.SelectedList [0] .DRUG_TYP_CODE = 'METH' saveObj.SelectedList [1] .DRUG_TYP_CODE = 'METH' saveObj.SelectedList bekommen [ 2] .DRUG_TYP_CODE = 'METH'

Das ist, was ich brauche

saveObj.SelectedList [0] .DRUG_TYP_CODE = 'BARB' saveObj.SelectedList [1] .DRUG_TYP_CODE = 'HALU' saveObj.SelectedList [2] .DRUG_TYP_CODE = 'METH'

Antwort

3

Scheint, wie newObj = self.Selected; Sie machen ein Problem. Was passiert, ist, dass jedes Element eine Referenz von self.Selected speichert (d. H. Alle Objekte beziehen sich auf eine einzelne Speicherreferenz). Wenn also der letzte Wert auf METH aktualisiert wird, haben alle 3 Elemente den gleichen Wert self.Selected.

angular.forEach(self.DrugNamesSelected, function(value, key) { 
    //Load Objects into array 
    var newObj = {}; 
    //newObj = self.Selected; //removed this line 
    newObj.FK_CLNT_PERSFK_PER = $routeParams.personId; 
    newObj.DRUG_TYP_CODE = value; 
    saveObj.SelectedList.push(newObj); 
}); 

Wenn Sie diese bestimmte Objektzuordnung aus irgendeinem Grund brauchen, würde ich vorschlagen, dass Sie Object.assign zu verwenden, die self.Selected Eigenschaften newObj kopiert.

Object.assign(newObj, self.Selected) 

IE11 unterstützt nicht Object.assign aus dem Kasten heraus. Sie könnten in Erwägung ziehen, Polyfill für das gleiche hinzuzufügen von here

+0

Object.assign funktioniert nicht für ie (11), also musste ich eine Polyfill-Funktion hinzufügen. (http://stackoverflow.com/questions/35215360/getting-error-object-doesnt-support-property-or-method-assign) – gman