Angularjs 如何在窗体中重置$dirty

Angularjs 如何在窗体中重置$dirty,angularjs,angular-ui,Angularjs,Angular Ui,我在申请表中使用$dirty时面临一个问题 问题是一旦更改表单字段,$dirty的值将设置为true 但现在,当您撤消更改时,它不会将$dirty值重置为false 我们可以手动将$dirty值重置为false,但之后当您再次更改表单字段值时,$dirty不会将其值更改为true。根据我的观察,它通过放置ng dirty类来设置表单中每个字段的$dirty值。即使删除该类,也不会影响$dirty行为 // Please find below attached Fiddle for code re

我在申请表中使用$dirty时面临一个问题

问题是一旦更改表单字段,$dirty的值将设置为true 但现在,当您撤消更改时,它不会将$dirty值重置为false

我们可以手动将$dirty值重置为false,但之后当您再次更改表单字段值时,$dirty不会将其值更改为true。根据我的观察,它通过放置ng dirty类来设置表单中每个字段的$dirty值。即使删除该类,也不会影响$dirty行为

// Please find below attached Fiddle for code reference

您正在寻找的是$setPristine()。您可以在以下文档中找到:


当表单第一次加载到页面上时,它处于称为“原始”的状态。你会发现,$pristine是真的,$dirty是假的。对具有角度绑定的任何元素进行任何更改后,这些值都会反转。虽然可以将形状输入值重置为其原始状态,但这样做不会更改任何角度形状状态。调用form.$setPristine();将这些表单值设置回其原始状态。

请给我sameThanks@MBielski的Fiddle示例:)我会在我的应用程序中检查它,并让您知道:)我在创建表单的地方看到过它,然后在加载表单时,不知怎的,$pristine状态设置为false,即使用户没有更改值。如果我做$setPristine,我基本上是说,“我设置这个表单的方式是被认为是原始的”还是说“遍历表单并将所有控件更改回它们的原始值”?