在Angular 1.2.16中我有这个奇怪的问题,我的复选框验证没有按预期工作。
我在Chrome版本35.0.1916.114和Mac OSX 10.8.5上的Firefox 29.0.1上测试了这个
我的期望:取消选中该复选框(并且rma.helpdeskFirst等于' 0')复选框无效
这在Angular 1.0.1中按预期工作,但它不在1.2.16中。
这是我的HTML
<div ng-controller="MyCtrl">
<form name="rmaForm">
<input type="checkbox" ng-model="rma.helpdeskFirst" name="helpdeskFirst" ng-required="rma.helpdeskFirst == 0" ng-true-value="1" ng-false-value="0" />
<p><span class="error" ng-show="rmaForm.helpdeskFirst.$error.required">Field is required</span></p>
</form>
</div>
和Javascript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.rma = {};
$scope.rma.helpdeskFirst = '0';
}
它在Angular 1.0.1中工作(参见Plunker)
在Angular 1.2.16中,由于某种原因它不起作用(见Plunker)
可能是Angular 1.2.16中的这个功能被破坏了,还是我解决了这个问题而不是Angular方式?
提前致谢。
答案 0 :(得分:3)
使用required
/ ng-required
和ng-true-value
的组合,角度1.2似乎存在问题。
以下是现有的错误报告https://github.com/angular/angular.js/issues/4681建议的解决问题的拉取请求尚未合并,问题由于不活动而被关闭。
通过移除ng-true-value
,查看有效的小提琴(http://jsfiddle.net/K8RU8/)。我认为,当选中复选框时,您必须以true
作为值。
据我所知,数据绑定在使用时会中断。如果将ng-true-value
添加回输入,绑定将不再有效。