【问题标题】:Angularjs dirty state management and field re-useAngularjs脏状态管理和字段重用
【发布时间】:2014-05-26 13:12:14
【问题描述】:

Angular.js 在字段级别和表单级别管理表单字段的脏状态:如果我在表单字段中输入内容,该字段会变脏,表单也会变脏。

在我们的项目中,我们使用表单字段脏状态,使用 css 类 ng-dirty 突出显示已触摸的字段。

只要我们为一个模型值提供一个精确的表单字段,一切都很好。

但一个典型的用例是模型中的一组元素。并以(详细)形式管理项目。

开始编辑其中一个会导致相应的表单域变脏。没关系。

现在,如果下一个条目被编辑,表单将填充它的值。但是现在表单元素脏状态和模型值脏状态不同步:表单字段脏,模型值不脏。

我想知道为什么 Angular 使用表单字段脏状态而不是模型值脏状态来设置表单中的类。未来是否有计划改变这一点?

解决此类问题的优雅方法是什么?我想将微风.js 与 angular 一起使用,但我对微风的了解还不够,如果它可以帮助我的话。

【问题讨论】:

  • 不太清楚你的意思... "模型的脏状态" 是什么?没有这样的东西(除非你自己构建它。还有一些方法可以设置字段的“脏”状态,以防你想要与 Angular 的默认行为不同的行为。
  • 很抱歉造成混淆。我知道模型没有开箱即用的脏状态。但是当模型值改变时,(独立于用户交互)模型可以被认为是脏的,直到模型被保存——也就是我的意思。根据任何类型的“模型的脏状态”而不是物理输入字段的状态来指示字段和表单的脏状态不是更好吗? - 我也知道,我可以手动将字段设置为脏或原始,但我想知道是否已经有更好的解决方案。
  • 不,Angular 不可能跟踪“模型脏状态”,因为 a.) 它与模型无关,b.) 它不知道什么是“原始状态” “模型的状态。尽管如此,保持原始参考并对照它检查您的模型以确定它是否脏并不难。 (Angular 文档中有此类实现的示例。)

标签: forms angularjs validation breeze


【解决方案1】:

在我的例子中,我使用轻风直接在控制级别指示验证错误。 每个模型都定义了验证规则。我很确定您可以使用微风解决您的要求。看看:http://www.breezejs.com/breeze-labs/breezedirectivesvalidation

【讨论】:

  • 感谢您分享此链接,我将很快深入了解,但快速浏览让我认为这可能有助于解决此问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多