从循环创建多个级别的json

时间:2012-09-25 16:33:42

标签: javascript json angularjs

我正在写一个有角度的指令来帮助验证字段。它正在努力存储验证结果。

我想将它存储在像error.password.old

这样的对象中

执行此操作的代码如下所示:

if(!(typeof iAttrs.ngModel == "undefined"))
{
    var model = iAttrs.ngModel.split('.');
    var length = model.length;
    var target = scope.error;

    if(typeof validation[iAttrs.validate] == "function")
    {
       for(var index = 0; index < length; index++)
       {
           target = target[model[index]];
       }
       target = validation[iAttrs.validate]();
       scope.$apply();
    }
    else throw("function " + iAttrs.validate + " does not exist.");
 }

iAttrs.ngModel持有“password.old”。

谷歌目前正在抛出:

  

未捕获的TypeError:无法读取未定义的属性“old”

这是在for循环的第二次迭代中抛出的。

我知道它是未定义的,但我需要找到一种方法来动态定义它而不使用正常的{}符号。

2 个答案:

答案 0 :(得分:0)

我正在使用以下代码来执行此操作。

 function createObj( str ) {

            var d = str.split("."), j, o = scope.error;
            for (j = 0; j < d.length; j = j + 1) {
                o[d[j]] = o[d[j]] || {};
                o = o[d[j]];
            }
            return o;
        }

    createObj(iAttrs.ngModel);

答案 1 :(得分:0)