使用此Angular Directive中的var来设置缬度

时间:2014-09-30 16:06:02

标签: angularjs angularjs-directive

我无法弄清楚如何在以下情况下使用变量。 在html中,我在循环中有以下内容:

<span ng-show='myForm." + ids[i] + ".$error.missingInfo'>Wrong!</span>";

生成的html是正确的,这意味着ids [i]会生成相应的html,如下所示:

<span ng-show='myForm.foo.$error.missingInfo'>Wrong!</span>";

我有一个使用自定义验证指令的输入元素:

<input name="me-foo" id="foo-me" validateI />

在指令中,我想设置“myForm.foo。$ error.missingInfo”的有效性,所以我的指令:

app.directive('validateI', function(){
return{
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, elem, attr, ctrl) {

        ctrl.$parsers.unshift(function (viewValue) {
            var id= attr.id;
            var x= id.indexOf("-");
            //theId will be 'foo'
            var theId= id.substring(x+1);
            if(viewValue.length > 0) {
                //this does not work
                scope.myForm.theId.$setValidity("missingInfo", true);
                //as a test, I hard-coded this and it worked:
                scope.myForm.foo.$setValidity("missingInfo", true);
             }
                }
            }
            else{
                console.log("*** summary is empty");
            }
        });
    }
}
});

在这种情况下是否有办法使用变量,或者当与此指令绑定的元素未命名为'foo'时,如何获取'foo'错误消息?

2 个答案:

答案 0 :(得分:0)

只需使用以下内容即可:

ctrl。$ setValidity(“missingInfo”,true);

答案 1 :(得分:0)

不使用点表示法,而是使用此表示法:

scope.myForm[id].$setValidity("missingInfo", false);