需要复选框的自定义值不适用于最新的AngularJS

时间:2014-06-10 09:16:57

标签: javascript angularjs validation checkbox

在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方式?

提前致谢。

1 个答案:

答案 0 :(得分:3)

使用required / ng-requiredng-true-value的组合,角度1.2似乎存在问题。

以下是现有的错误报告https://github.com/angular/angular.js/issues/4681建议的解决问题的拉取请求尚未合并,问题由于不活动而被关闭。

通过移除ng-true-value,查看有效的小提琴(http://jsfiddle.net/K8RU8/)。我认为,当选中复选框时,您必须以true作为值。

据我所知,数据绑定在使用时会中断。如果将ng-true-value添加回输入,绑定将不再有效。