如何在Angular中验证依赖文本框

时间:2014-09-24 23:02:39

标签: angularjs validation

我有一个复选框,如果选中,则关联的文本框不能为空。 我应该在这种情况下使用指令,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

是的,您应该使用指令。

您需要在匹配的字段上设置$watch,以检查正在更改的其他字段是否使两者匹配,并添加解析器以检查当前字段的更新是否与其他领域。

如果您挂钩ngModelController,您可以利用所有内置验证功能。

像这样(coffeescript):

.directive('pxnMatchField', ($parse)->
  restrict: 'A'
  require: '?ngModel'

  link: (scope, elem, attrs, ngModel)->
    if !ngModel
      return console.warn "no model specified on match field element"

    scope.$watch("#{attrs.pxnMatchField}", (newVal)->
      ngModel.$setValidity('pxnMatchField', (newVal is ngModel.$viewValue))
    )

    # Dom input validation
    ngModel.$parsers.push((domVal)->
      ngModel.$setValidity('pxnMatchField', 
                           (domVal is $parse(attrs.pxnMatchField)(scope)))
      return domVal
    )
)

然后使用以下标记(jade):

  label Password
    input(ng-model="password")
  label Confirm Password
    input(ng-model="confirmPassword", pxn-match-field="password")