【问题标题】:Creating multiple levels of json from loop从循环创建多级 json
【发布时间】:2012-09-25 16:33:41
【问题描述】:

我正在用 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.");
 }

iAttrs.ngModel 持有“password.old”。

谷歌目前正在抛出:

未捕获的类型错误:无法读取未定义的“旧”属性

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

我知道它是未定义的,但我需要找到一种方法在没有正常 {} 表示法的情况下即时定义它。

【问题讨论】:

  • 这行让我很困惑:target = target[model[index]];。每次循环都用target 的一部分覆盖target
  • 我会研究核心表单/ng-form/ng-model 系统:docs.angularjs.org/api/ng.directive:form,因为已经在进行验证,而且它肯定是可扩展的。

标签: javascript json angularjs


【解决方案1】:

【讨论】:

    【解决方案2】:

    我正在使用以下代码来做到这一点。

     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);
    

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2013-07-16
      • 2019-12-29
      • 2016-11-11
      • 2017-08-09
      相关资源
      最近更新 更多