Angularjs 角度不';输入无效时,在模型更改时恢复空但有效的输入值
我在Angularjs 角度不';输入无效时,在模型更改时恢复空但有效的输入值,angularjs,angularjs-ng-model,Angularjs,Angularjs Ng Model,我在和表单验证方面遇到了一个奇怪/令人困惑的行为 本质上,如果输入具有无效的数值(将form.$valid设置为false),如果模型值更改为null,则它会将$valid标志设置回true,但不会更改输入字段中显示的值 我创建了一个示例。按照以下步骤复制: 将单元格的值修改为空 单击保存链接(将null保存到模型中) 输入一个非数字字符 单击重置链接(从模型恢复null) 请注意,输入字段不再无效,但无效字符仍然存在 这是一个错误还是我做错了什么 编辑: 我开始相信这是一个错误。我通过引入另一
和表单验证方面遇到了一个奇怪/令人困惑的行为
本质上,如果输入具有无效的数值(将form.$valid
设置为false
),如果模型值更改为null
,则它会将$valid
标志设置回true
,但不会更改输入字段中显示的值
我创建了一个示例。按照以下步骤复制:
null
保存到模型中)null
)为null设置值。
这里有一个关于“修复”的例子
EDIT2:
这在v1.3+中得到了修复。您的代码运行正常,但忘记在app.js中添加验证检查
this.save = function(){
if($scope.mainForm.$valid && !this.get() == ""){
old_num = num;
}
};
您应该仅在表单有效时保存该值
但是,这不是一个完整的解决方案,因为整个表单必须有效才能保存。为了进一步改进算法,我建议您标记单个模型的有效性,并检查单个模型的有效性
希望有帮助有一个类似的问题,我通过以下方法解决了它:
form.$rollbackViewValue()
或form.field.$rollbackViewValue
如果是$invalid
,则在执行任何其他重置代码之前
在您的示例中,您可以更改为:
重置
谢谢您的回复,但这对我没有帮助。当我保存了一个有效(例如空/空)值,但无法恢复时,就会出现问题。因此,使用您的建议并不能修复我描述的错误。同样,我的问题是一个非常具体的表单验证行为。这与我如何/何时保存表单没有什么关系。你不能先检查空值吗?检查我的修改。我添加了一个检查,以查看该值是否为空。我进行了测试,它在我这边起作用。尽管如此,我在保存方面没有问题——我在重置方面有问题。我不明白你的办法是什么。您是否遵循了问题中的复制步骤?这不是一个错误-这是一条日志消息,我放在那里是为了查看发生了什么。当值无效时,ngModel
指令将模型设置为undefined
。问题是,当我试图将模型设置回null
-无效标志被重置,但无效值保留在输入字段中。事实上,这是一个错误-在v1.3中已修复+