2016-06-20 3 views
0

Следующий код дает мне ошибку «Невозможно прочитать свойство PERSON1 of null». Если я прокомментирую строку, где я пытаюсь назначить динамическую переменную и раскомментировать строку оповещения, она выводит предупреждения с именем каждого последующего человека.Как вы заполняете динамическую переменную в 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 

Я просто хочу, чтобы создать/добавить объект $ scope.internalReps, так что я могу добавить материал к ней, как $ scope.internalReps.PERSON1.Name = «Whatever»; $ scope.internalReps.PERSON1.Salary = 100000;

+0

is $ scope.internalReps сначала инициализируется объектом? Тогда вам также необходимо обеспечить $ scope.internalReps [repName] - это объект, а не null или undefined. –

ответ

0

Попробуйте добавить пустой объект для «internalReps» перед вашим циклом forEach. Похоже, что вы еще не объявили объект, поэтому он не может динамически добавлять нулевой объект.

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

. Затем я получаю - TypeError: не могу установить свойство «такой» из неопределенного –

+0

. Вы должны добавить свойство как еще один пустой объект сначала. '$ scope.internalReps [repName] = {}; $ scope.internalReps [repName] .such = repName; ' –

+0

Я отредактирую свой ответ, чтобы показать обновление в контексте. –

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

Это работало. Спасибо за помощь!

Смежные вопросы