我有一个复选框,如果选中,则关联的文本框不能为空。 我应该在这种情况下使用指令,还是有更好的方法?
答案 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")