【问题标题】:Is it possible to add angular custom validation constraints conditionally?是否可以有条件地添加角度自定义验证约束?
【发布时间】:2013-12-05 22:45:16
【问题描述】:

ng-required 属性有助于根据条件使字段成为必填项:

<input ... ng-required="object.isRequired" \>

但是如何将这种类型的使用扩展到使用我自己的自定义验证指令呢?例如,假设我有一个自定义验证字段匹配。现在我想根据属性“object.needsToMatch”将此验证添加到输入字段。我希望会有类似的东西:

<input ... fieldsMatch="object.needsToMatch"

如果解决方案是创建另一个可以处理该条件的指令,那么我如何将其替换为内联(在输入元素内)?

第二个问题:那么当自定义验证需要一个属性时如何使它工作,例如在fieldsMatch验证器的情况下,该字段需要匹配的模型字段。

【问题讨论】:

    标签: javascript validation angularjs


    【解决方案1】:

    我会创建一个指令来处理这个仅限于属性的指令。

    <input ... ng-model="inputModel" fieldMatchValidator fieldToMatch="object.needsToMatch" />
    

    在指令中:

    ...directive('field-match-validator', function(){
    
     require: 'ngModel',
    
     scope:{
      fieldToMatch: '='
     },
    
     link: function(scope, element, attrs, ngModelCtrl){
       //watch on the model and validate it against scope.fieldToMatch
     }
    });
    

    显然这有点粗略,但应该可以帮助您入门。

    【讨论】:

    • 我得到的是我如何有条件地应用这个约束。或者你会建议我有一个论点,每次我验证时都将其标记为有效(如果 object.needsToMatch === false)?
    • 嗯,一种方法是不要将它放在您不想验证它的字段上。如果您的意思是,您希望它更加动态 - 那么是的,我会在链接函数中进行一些检查以查看要匹配的字段的状态(它们可能应该在那里)。
    • 我猜这是最好的方法,我还没有找到另一种方法。我现在将其标记为答案。理想情况下,我根本不需要输入指令链接函数,但这似乎要求很多;)。
    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2018-01-29
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多