这是一个AngularJS应用程序(1.2.16)。我浏览到一个对话框来编辑一些项目。其中一个控件是多个SELECT
,其中包含以下可见值:
incident
work order
这些可见值对应于以下数据值:
INCIDENT
WORK_ORDER
这是通过使用ng-options=" ... as ... for ... in ... "
模式,使用枚举:
var FlexFieldSubjectTypeEnum = {
INCIDENT:{name:"INCIDENT", description:"incident"},
WORK_ORDER:{name:"WORK_ORDER", description:"work order"}
}
如果表格大致如下:
<form ng-submit="save(formName)" name="formName" class="form-horizontal">
...
<div class="control-group">
<label class="control-label">Subject type:</label>
<div class="controls">
<select name="subjectType"
ng-options="type.name as type.description for type in getEnumAsArray('FlexFieldSubjectTypeEnum') | orderBy:'name'"
ng-model="entity.subjectType"
required></select>
</div>
</div>
现在,如果对话框从后端加载项目($scope.entity
)并且entity.subjectType
设置为列表中的第一项,则表单验证会将其标记为未设置。我有许多其他类似结构的对话框,并没有在其他地方看到过这个问题。
如果从后端返回的项指向第二项(WORK_ORDER
),则可以在SELECT
(“work order
”)中很好地表示,并且没有验证错误。
使用required
或ng-required="true"
时,问题确实存在。
如果删除required
属性,则该问题不存在,但该字段也突然变为可选,这不是我想要的。
非常感谢您的帮助!
答案 0 :(得分:1)
差不多一个月后,同时从Bootstrap v2.2.2升级到v3.1.1,问题就消失了。