我正在使用 Angular (1.3b17) 动态创建一个表单。我将表单的架构存储在一个对象中,并包括几个定义我的字段在该架构中的行为的属性,例如一个字段将具有“类型”(文本、文本区域、检查等)和“最大长度”属性。然后,我将元素的 Angular 属性设置为对象的相应属性(例如 ng-maxlength="field.maxlength")。

我注意到一些奇怪的事情,我想看看这是否按预期工作。如果设置了属性,但没有指定值 (ng-maxlength=""),则在输入任何内容后立即将 $error 设置为 true,因为它期望最大长度为 0。类似地,使用表达式 (ng-maxlength= "field.maxlength") 如果未设置该属性,则行为方式相同。

我创建了一个简单的 Plunker 以便您可以看到我指的是什么。我个人希望如果未设置该值,即使该属性存在,也不会进行 maxlength 检查。

<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="" /><br />
{{myForm.name.$error}}

或者
<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="someundefinedvalue" /><br />
{{myForm.name.$error}}

当然,我可以通过将 ng-maxlength 设置为较大的值来解决此问题,但这似乎并不理想。这种行为有原因吗?或者它可能是一个错误?

最佳答案

貌似只要你在表单控件上定义指令 the validator is applied 就可以了。所以,你的问题的答案是,它一直都是这样,它可能被认为是一个错误,但在这一点上,这将是一个突破性的变化,不太可能改变。

关于javascript - 当未设置显式值且字段包含任何字符时,Angular ng-maxlength 将字段标记为无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25003379/

10-13 04:26