【发布时间】:2014-05-26 13:12:14
【问题描述】:
Angular.js 在字段级别和表单级别管理表单字段的脏状态:如果我在表单字段中输入内容,该字段会变脏,表单也会变脏。
在我们的项目中,我们使用表单字段脏状态,使用 css 类 ng-dirty 突出显示已触摸的字段。
只要我们为一个模型值提供一个精确的表单字段,一切都很好。
但一个典型的用例是模型中的一组元素。并以(详细)形式管理项目。
开始编辑其中一个会导致相应的表单域变脏。没关系。
现在,如果下一个条目被编辑,表单将填充它的值。但是现在表单元素脏状态和模型值脏状态不同步:表单字段脏,模型值不脏。
我想知道为什么 Angular 使用表单字段脏状态而不是模型值脏状态来设置表单中的类。未来是否有计划改变这一点?
解决此类问题的优雅方法是什么?我想将微风.js 与 angular 一起使用,但我对微风的了解还不够,如果它可以帮助我的话。
【问题讨论】:
-
不太清楚你的意思... "模型的脏状态" 是什么?没有这样的东西(除非你自己构建它。还有一些方法可以设置字段的“脏”状态,以防你想要与 Angular 的默认行为不同的行为。
-
很抱歉造成混淆。我知道模型没有开箱即用的脏状态。但是当模型值改变时,(独立于用户交互)模型可以被认为是脏的,直到模型被保存——也就是我的意思。根据任何类型的“模型的脏状态”而不是物理输入字段的状态来指示字段和表单的脏状态不是更好吗? - 我也知道,我可以手动将字段设置为脏或原始,但我想知道是否已经有更好的解决方案。
-
不,Angular 不可能跟踪“模型脏状态”,因为 a.) 它与模型无关,b.) 它不知道什么是“原始状态” “模型的状态。尽管如此,保持原始参考并对照它检查您的模型以确定它是否脏并不难。 (Angular 文档中有此类实现的示例。)
标签: forms angularjs validation breeze