参见示例here http://jsfiddle.net/vBK9A/.
使用 $validators 管道,我尝试检查一个字段是否包含与另一个字段相同的值。
此示例中的每个输入都与另一个相关联,因此预期结果如下:
- 在 input#1 中输入一个值
- 在 input#2 中输入相同的值
- 现在这两个字段都应该有效
- 更改输入#1 中的值
- input#1 应该无效(或 input#2 或两者)
最初,我使用$watch
当前模型和目标都等于,因此只需使用该指令的两个字段之一。然而,随着$validators
管道,此方法意外停止工作(可能是一个错误)。
无论如何,正如您所看到的,当第二个输入更改时,接收到的关联输入的值是undefined
.
Solution
我通过以下方法解决了这个问题:
JSFiddle http://jsfiddle.net/Y3A5v/
正如 Nikos 所说,这两个实例相互抵消,因此通过以下代码修复了这个问题:
$scope.$watch('passwordWatch', function(pass) {
$control.$validate();
});
因此,现在,当目标输入发生变化时,当前输入将重新生效。当当前输入更改时,它会自动验证(像往常一样)。
一个问题是,当验证器失败时(返回false
),然后将基础模型值设置为undefined
. So:
- 您在密码中输入一些内容,例如
"aaa"
;这是NOT与passwordConfirm
,所以验证器返回false
模型得到undefined
value
- 您在passwordConfirm中输入相同的值;但从上面的密码值是
undefined
and undefined !== "aaa"
,所以密码Confirm验证返回false
too.
- 等等...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)