Javascript 从循环创建多级json

Javascript 从循环创建多级json,javascript,json,angularjs,Javascript,Json,Angularjs,我正在用angular编写一个指令来帮助验证字段。它一直工作到存储验证结果的地步 我想将其存储在一个对象中,如error.password.old 执行此操作的代码如下所示: if(!(typeof iAttrs.ngModel == "undefined")) { var model = iAttrs.ngModel.split('.'); var length = model.length; var target = scope.error; if(type

我正在用angular编写一个指令来帮助验证字段。它一直工作到存储验证结果的地步

我想将其存储在一个对象中,如
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.");
 }
if(!(iAttrs.ngModel的类型==“未定义”))
{
var模型=iAttrs.ngModel.split('.');
变量长度=模型长度;
var target=scope.error;
if(验证类型[iAttrs.validate]=“功能”)
{
对于(var索引=0;索引<长度;索引++)
{
目标=目标[模型[索引];
}
目标=验证[iAttrs.validate]();
作用域:$apply();
}
else throw(“函数”+iAttrs.validate+“不存在”);
}
iAttrs.ngModel持有“password.old”

谷歌目前正在推出:

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

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


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

我正在使用以下代码来实现这一点

 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);
函数createObj(str){
var d=str.split(“.”),j,o=scope.error;
对于(j=0;j
您可以使用
$parse
服务:


这一行让我困惑:
target=target[model[index]]。每次通过循环,您都会覆盖
target
,其中包含
target
的一部分。我将研究核心表单/ng表单/ng模型系统:因为已经在进行验证,而且它肯定是可扩展的。