Angular dropdown / select required始终表示它是有效的

时间:2014-01-08 20:21:05

标签: validation angularjs html-select

所以我有一个下拉菜单,我正在使用角度来构建它。分钟是一组数字[0,1,2 .... 59]。过滤器是一个简单的过滤器,它将0-9中的数字显示为00,01 ......等。

 <select ng-model="addObj.StartMinute"
                            ng-options="m as m | pad2Digit for m in Minutes"
                            required
                            name="startMinute">
                            <option value="">-- select --</option>
                        </select>

我的问题是此ALWAYS报告有效。我已经删除了那里的选项,让我自定义未找到匹配时使用的选项,并且不会更改它。我已经尝试将StartMinute设置为null,-1和undefined,并且仍然选择ALWAYS表示它是有效的。

到目前为止,我发现问题与我使用简单数字而不是绑定到对象有关。如果我正在使用更多对象集合进行下拉列表,则所需的验证正确检测到没有选择任何内容。我原本以为将上面的下拉列表中的初始值设置为null将起作用,但事实并非如此。那么有谁知道如何在绑定到数字数组的下拉列表上使用必需的验证?

1 个答案:

答案 0 :(得分:3)

在项目中必须有其他东西,它不起作用,这使得这不起作用,因为原始的jsfiddle我一起试图演示问题正常工作。如果初始值为null,那么验证确实会失败,就像我期望的那样。

<强> HTML

<div ng-app="app">
<div ng-controller="ctrlDropdown">
    <form name="testForm">
        <select ng-model="number1"
                ng-options="num for num in numbers"
                required
                name="ddl1">
                    <option value="">- select - </option>
        </select>
        <br/>failsValidation: {{testForm.ddl1.$error.required}}
        </form>
</div>
</div>

<强> JS

var app = angular.module("app",[]);
app.controller("ctrlDropdown",function($scope){
    $scope.test = "wee";
    $scope.number1 = null;
    $scope.numbers=[1,2,3,4,5,6];
});

http://jsfiddle.net/NBhTT/