0

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

我想将它存储在一个对象中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 循环的第二次迭代中抛出的。

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

4

2 回答 2

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);
于 2012-09-25T16:42:53.740 回答
0

您可以使用该$parse服务:http ://docs.angularjs.org/api/ng.$parse

http://jsfiddle.net/4LhN9/27/

于 2012-09-25T17:50:18.987 回答