2016-06-20 11 views
0

Der folgende Code gibt mir den Fehler "Kann die Eigenschaft PERSON1 von null nicht lesen". Wenn ich die Zeile auskommentiere, in der ich versuche, die dynamische Variable zuzuweisen und die Warnmeldung auskommentiert, erscheinen Warnmeldungen mit dem Namen jeder nachfolgenden Person.Wie füllt man eine dynamische Variable in AngularJS

function fillInternalRepData() { 

    var internalRepList = null; 

    console.log("Querying Table for internal reps"); 
    queryTable(//..blabla..//, "false", function (callbackResp) { 
     internalRepList = callbackResp; 

     //   alert("TRIGGERED"); //WORKS 
     //   alert(internalRepList.length); //WORKS 
     angular.forEach(internalRepList, function (rep) { 
      repName = rep.such; 
      $scope.internalReps[repName].such = repName; 
      //alert(repName); //WORKS WHEN LINE ABOVE IS COMMENTED OUT 
     }); 


    }); //get list of internal reps 

ich einfach erstellen möge/fügen Sie das Objekt $ scope.internalReps so, dass ich Sachen, um es wie $ scope.internalReps.PERSON1.Name = „Was auch immer“ hinzufügen kann; $ scope.internalReps.PERSON1.Salary = 100000;

+0

wird $ scope.internalReps zuerst auf ein Objekt initialisiert? Dann müssten Sie auch sicherstellen $ scope.internalReps [repName] ist ein Objekt und nicht null oder undefined –

Antwort

0

Versuchen Sie, vor Ihrer forEach-Schleife ein leeres Objekt für den "internenReps" hinzuzufügen. Es sieht nicht so aus, als ob Sie das Objekt bereits deklariert haben, daher kann es nicht dynamisch zu einem Null-Objekt hinzugefügt werden.

$scope.internalReps = {}; 
angular.forEach(internalRepList, function (rep) { 
    repName = rep.such; 
    $scope.internalReps[repName] = {}; 
    $scope.internalReps[repName].such = repName; 
    //alert(repName); 
}); 
+0

Ich bekomme dann - TypeError: Kann nicht die Eigenschaft 'so' von undefined –

+0

Sie müssen die Eigenschaft als ein weiteres leer hinzufügen Objekt zuerst. '$ scope.internalReps [repName] = {}; $ scope.internalReps [repName] .such = repName; ' –

+0

Ich bearbeite meine Antwort, um das Update im Kontext anzuzeigen. –

0
var internalReps = {}; 
angular.forEach(internalRepList, function (rep) { 
repName = rep.such; 
internalReps[repName] = { such: "" }; 
internalReps[repName].such = repName; 
//alert(internalReps[repName].such); 
}); 

Das funktionierte. Danke für die Hilfe!