【问题标题】:How do you populate a dynamic variable in AngularJS如何在 AngularJS 中填充动态变量
【发布时间】:2016-06-20 22:44:21
【问题描述】:

以下代码给出了错误“无法读取属性 PERSON1 of null”。如果我注释掉我尝试分配动态变量的行并取消注释警报行,它会弹出带有每个连续人员姓名的警报。

    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;

【问题讨论】:

  • $scope.internalReps 是否先初始化为对象?然后你还需要确保 $scope.internalReps[repName] 是一个对象,而不是 null 或 undefined

标签: javascript angularjs dynamic-variables


【解决方案1】:

尝试在 forEach 循环之前为“internalReps”添加一个空对象。看起来你还没有声明对象,所以它不能动态添加到空对象。

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

【讨论】:

  • 然后我得到 - TypeError: Cannot set property 'such' of undefined
  • 您必须先将该属性添加为另一个空对象。 $scope.internalReps[repName] = {}; $scope.internalReps[repName].such = repName;
  • 这行得通,希望我可以在完成后将它传递给 $scope.internalReps --
  • var internalReps = {}; angular.forEach(internalRepList, function (rep) { repName = rep.such; internalReps[repName] = { such: "" }; internalReps[repName].such = repName; alert(internalReps[repName].such); }) ;
【解决方案2】:
var internalReps = {}; 
angular.forEach(internalRepList, function (rep) { 
repName = rep.such; 
internalReps[repName] = { such: "" }; 
internalReps[repName].such = repName; 
//alert(internalReps[repName].such); 
});

这行得通。感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多