gpt4 book ai didi

javascript - angularjs - 将某些带有数据的输入正确设置为 $pristine 或未触及

转载 作者:行者123 更新时间:2023-11-28 10:48:39 27 4
gpt4 key购买 nike

经过研究,我仍然陷入困境。我正在使用带有 Angular “预嵌入”的应用程序的最新版本的基础。

我有一个用于添加和编辑数据的表单 - 假设它用于工作并跟踪员工的工作天数。加载 View 时,表单完全是空的,包含两个部分 - 工作详细信息和员工详细信息。

首先,用户必须在工作部分输入并保存详细信息(以便为工作创建 ID,以便将员工链接到该工作),以便激活员工部分。这工作正常,并且可以通过将作业 ID 设置为 > 0(-1 是加载时的默认值)来启用;

到目前为止,一切正常,但我的 Controller 中有一个功能,允许加载现有的作业记录。当用户模糊三个字段之一时, Controller 会检查数据对象中是否有与这些唯一字段匹配的作业,并在范围“作业”模型中的数据中加载(angular.copy)。加载后,所有表单输入都将被设置并标记为脏。

显然,我所需的行为是,如果系统加载了工作详细信息,则表单不会被标记为脏,以便让我知道工作详细信息是否在之后的任何时候被编辑过。对于已保存并赋予 ID 的新作业,也需要同样的操作。

据我了解,setPristine() 函数实际上重置了表单和模型,类似于 form[0].reset()但我可能错了。我还怀疑不受影响可能是一种可行的方法?

我还应该提到,它包含此 View 的所有部分,包括在员工部分中添加员工输入。

我知道我可以简单地手动删除 ng-dirty 类,但已阅读此内容,然后不会更新 Angular 方式,也不会识别进一步的编辑。

有没有一种方法可以在功能上从元素的所有子输入中删除 ng-dirty,而不是全部在表单中,并且不删除加载的数据?

注意:默认情况下,所有输入都链接(通过 ng-model )到其相关模型,并且数据在 Controller 中加载到模型。

最佳答案

看来我误解了其他帖子中的 pristine,经过进一步测试,只有输入唯一数据的字段才更改为 dirty。我只需要在加载现有记录后对此调用 setPristine,然后可能循环遍历此部分中的所有元素来测试它们。 $setPristine 没有清除我之前读到的输入。

关于javascript - angularjs - 将某些带有数据的输入正确设置为 $pristine 或未触及,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com