AngularJS:为什么我的字段无效? [英] AngularJS : Why is my field invalid?

查看:24
本文介绍了AngularJS:为什么我的字段无效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自定义密码验证

app.directive('userPassword', function() {返回 {限制:'A',要求:'ngModel',链接:函数(范围,榆树,属性,ctrl){ctrl.$validators.myValidator = 函数(模型值,视图值){var msg = helper.validation.user.localPassword(modelValue)ctrl.$error.message = msgctrl.required = helper.validation.user.localPassword()返回 !留言}}}})

这是我的密码html:

<label for="signup_password">密码:</label><input ng-model="password" type="password" name="password" id="signup_password"占位符="输入密码"用户密码 ng-required="signupForm.password.required" class="my-form-control">

当我输入abcd时,指令link函数的返回值为true.当我检查元素时,我得到了这个:

class="my-form-control ng-invalid ng-dirty ng-valid-parse ng-valid-required ng-valid-my-validator ng-touched"

如您所见,requiredmy-validator 都是有效的(ng-valid-requiredng-valid-my-validator.为什么我的班级还是ng-invalid?

当我检查整个表单时,它是 ng-valid

更新.如果我使用 scope 而不是 ctrl,它就可以工作.

ctrl.$validators.myValidator = function(modelValue, viewValue) {var msg = helper.validation.user.localUsername(modelValue)scope.userUsername = {}scope.userUsername.message = msgscope.userUsername.required = helper.validation.user.localUsername()返回 !留言};

在 HTML 中

<div ng-show="signinForm.username.$touched && userUsername.message">{{userUsername.message}}

但我不想污染控制器范围.如何使用 ctrl 而不是 scope

您可以将以下样式添加到标题中.输入字段始终为红色.

http://plnkr.co/edit/deAQoIw4KfekIh3ZOt1j?p=preview