问题标签 [dirty-tracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
30207 浏览

c# - c# 将类属性标记为脏

下面是一个简单的枚举示例,它定义了一个对象的状态和一个显示该枚举实现的类。

当用数据库中的数据填充类对象时,我们将枚举值设置为“clean”。为了将大部分逻辑排除在表示层之外,我们如何在属性更改时将枚举值设置为“脏”。

我在想一些类似的事情;

在类的每个属性的设置器中。

这听起来像一个好主意吗,是否有人对如何分配脏标志有更好的想法,而无需在表示层中这样做。

0 投票
2 回答
4411 浏览

vb.net - 检查是否有任何控件已更改并在表单关闭时保存数据

我们正在使用 vb.net/dev express 工具。我们有几个控件文本框、组合等...而不是检查每个更改的值,我们想要遍历所有控件并检查是否已编辑任何内容,然后在表单关闭时保存。下面是我尝试完成的一些代码。问题是,虽然它在技术上有效......它使用递归 AddDirtyEvent(c) ,所以当我关闭表单并单击是保存时......由于多个控件它多次调用该消息框......如果我接受out ,它将无法工作并检测脏更改。我只是想知道我怎样才能让它以我想要的方式工作,或者是否有更简单的方法......

0 投票
2 回答
2050 浏览

ember.js - ember.js 手动设置 hasDirtyAttributes 保存时不清除

我的模板中有一个保存按钮,当模型 hasDirtyAttributes 时激活

当对相关模型的引用发生更改时,似乎没有设置 hasDirtyAttributes 标志。

示例
我有一个下拉菜单,允许选择一个名为contact
的相关模型。 如果我更改任何直接属性(例如名称),一切都会按预期工作,并且保存按钮会激活。
当我更改联系人时,它不会,我认为这是设计使然,所以我在更改操作被触发时设置了标志。

我在我的路由操作中设置它,如下所示:

现在它又可以工作了。当我更改联系人时,保存按钮会亮起。
但是,当我现在单击保存时,hasDirtyAttributes 标志保持为真(按钮保持活动状态),而之前它被清除,直到进行另一次更改。

我希望框架在成功保存后自动重新设置标志,就像以前一样。我当然可以在按钮的保存操作上重新设置标志。

感觉就像我正在解决一个问题,也许 hasDirtyAttributes 不应该手动设置,或者我应该使用不同的肮脏指标。

我的问题:如何正确处理?

0 投票
2 回答
3346 浏览

forms - 角 2++ | NgForm:Form.Dirty 总是脏的

确定 NgForm 看起来是否与任何用户输入之前完全一样


似乎form.dirty在更改后不会对其值进行编辑,并且form.touched似乎总是false无论如何:dirtyistouchedtouchedis tetched

模板.html 组件.ts

在 TypeScript 中,我对处理程序进行去抖动ngModelChange处理,以便 Angular 有机会form.dirty在我检查它之前更改值。这是因为在对象被修改ngModelChange之前被触发。NgForm

如果!estimate, 因为estimate === "", 则将其设置回其原始值undefined。在这种情况下,表单应该看起来与任何用户输入发生之前完全一样。

但是,当我在注释正上方的行上放置一个断点并输出form.dirty到 时consoleNgForm 永远不会变dirtyfalse.

是否可以确定表单看起来是否与任何用户输入之前完全一样?

显然,我可以编写自己的逻辑,但这是否意味着那NgForm是无用的?一定有什么我想念的,对吧?肮脏怎么可能不意味着肮脏

我已经查看了其他一些 SO 问题——第一个类似但绝对不是我要问的问题。他们在问这是否是故意的——我不在乎;我想知道如何实现上述目标。

关闭,但没有雪茄:

即使设置为原始值,angular2 formcontrol 也会保持肮脏

如果表单脏了,则阻止路由[Angular 2]

Angular 2 仅获取控制组中的脏值

如何以编程方式将 Angular 2 表单控件设置为脏?

Angular 2.x/4.x & bootstrap:patchValue 不会改变脏标志。可能的错误?

0 投票
1 回答
971 浏览

grails - Grails 3.1.1 - 当模型类扩展另一个 groovy 类时,脏检查不起作用

我有一个域类,它扩展了另一个具有相同名称但在不同库中的不同包中的 groovy 类。

问题是当我修改域类上的实例时,它没有被标记为脏,因此不会保留更改。

我读过 grails 3 版本对脏检查有一些增强,这可能是一个错误或者我遗漏了一些东西。

新对象被正确保存,没有任何问题,我在修改的域对象以及修改的属性上使用了 isDirty()方法,并且都返回false。对象附加到会话,通过isAttached()确认。

为了重现,我使用以下代码创建了一个测试项目,并尝试从使用脚手架生成的默认 grails 视图更新对象,但仍然没有保留更改。

注意:我在 Grails 2.4 中做过类似的事情,它曾经可以工作。

域类如下:

src/main/groovy 中的基类

控制器

链接到 github项目

问题:模型未标记为脏,即使它已被修改。当模型类扩展另一个 groovy 类时,就会发生这种情况。

如何重现:

  1. 运行应用程序。
  2. 创建一个新的模型对象(模型名称为 Derived)
  3. 使用编辑视图修改对象并单击更新。
  4. 您将看到修改没有持久化。