Angularjs 如何动态添加或删除验证

Angularjs 如何动态添加或删除验证,angularjs,Angularjs,我目前正试图用Angularjs创建一个动态表单。出于测试目的,表单有3个字段,这些字段通过ng repeat指令动态添加 以下是JSFIDLE: 问题: 我目前尝试动态设置验证指令。我想做到以下几点: <input ng-model="item.value" name="{{item.name}}" type="{{item.type}}" placeholder="{{item.placeholder}}" {{item.validators}}/> {{item.vali

我目前正试图用Angularjs创建一个动态表单。出于测试目的,表单有3个字段,这些字段通过ng repeat指令动态添加

以下是JSFIDLE:

问题:

我目前尝试动态设置验证指令。我想做到以下几点:

<input ng-model="item.value" name="{{item.name}}" type="{{item.type}}" placeholder="{{item.placeholder}}" {{item.validators}}/>

{{item.validators}}但是不起作用。有人知道我如何在动态字段创建期间添加和删除基本和自定义验证器吗

我想向动态添加的表单字段添加不同的验证器,如果字段被删除,还将删除验证器:

<input ng-model="user.email" name="email" type="email" placeholder="E-Mail" required email-available/>
<input ng-model="user.firstName" name="firstName" type="email" placeholder="Firstname" required/>
<input ng-model="user.lastName" name="lastName" type="email" placeholder="Lastname" required"/>


检查“自定义验证”页面。所有验证都在ngModel控制器中进行。有两个数组用于保存消毒器和验证器-和。我要做的是编写一个指令,将验证器列表作为参数,并将它们添加到上面提到的列表中或从中删除

我看到的唯一问题是重用内置验证器。也许您可以从中提取验证器函数并将其放入指令中。它不是很漂亮,但也不难

或者你可以自己编写验证器。每一个都只是一个正则表达式。以下是我的团队如何做到这一点:

.value('validators', (function () {
    function validatorFromRegex(regex) {
        return function (value) {
            return (!value) ? true : (value.toString().match(regex) !== null);
        };
    }
    return {
        required: function (value) { return (value !== ''); },
        path: validatorFromRegex(/^\/?([0-9A-Za-z]+[\-\/]?)*[0-9A-Za-z]+$/),
        tag: validatorFromRegex(/^([0-9A-Za-z]+\-?)*[0-9A-Za-z]+$/),
        date: validatorFromRegex(/^(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d$/),
        spotify: validatorFromRegex(/^spotify:user:fusetv:playlist:[a-zA-Z0-9]{22}$/),
        url: validatorFromRegex(/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/),
        twitter: validatorFromRegex(/^[A-Za-z0-9_]{1,15}$/),
        number: validatorFromRegex(/^\d+$/),
        phone: validatorFromRegex(/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/),
        zipcode: validatorFromRegex(/^\d{5}(-\d{4})?$/)
    };
})())

你好,伊万,谢谢你的回复。你发布的代码是指令的一部分吗?我来看看$formatters和$parser。我想Angularjs可能支持一些开箱即用的东西。但你是对的。事实并非如此,您的解决方案看起来不错。它只是一个静态对象,包含一组验证器,但可以在指令中使用。