问题标签 [dirty-data]
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.
angularjs - 如何以角度形式制作角度下拉控件(不是选择)?
我想在表单中使用下拉按钮而不是选择选项。我正在使用 Angular,问题是: 1. 下拉列表应显示选择的名称,但表单应提交其 Id 2. 对下拉列表的更改不会使表单变脏
我该如何解决这个问题?
java - Java - 检测对象是否已更改/脏检测机制的框架
亲爱的,我目前正在实现一个使用大量第三方 Web 服务的 Java 客户端。为了获得性能,我只想在客户端的对象被修改(变脏)的情况下调用 webservices。
与其编写能够检测对象是否脏的自己的框架,是否存在任何可以重用且不绑定到其核心产品(例如休眠)的开放/通用框架?
javascript - AngularJS:非破坏性、非阻塞的表单提交
问题
假设我有一个包含多个输入的表单,这些输入绑定到视图数据对象的各种属性。当我标记(“模糊”)时,我想将该值保存到保存服务并继续到下一个字段进行编辑。此保存服务完整返回新保存的对象。如果我随后将更新的对象写入控制器的数据对象,我正在编辑的当前输入将丢失更改。
问题
ngFormController
是否有使用我缺少的内置 Angular 解决方案?是否有任何库支持这一点而没有每个输入类型的场景?
我真的希望避免做类似的事情:
...然后必须将当前视图模型与传入的视图模型进行比较。
javascript - ember 数据关系和就绪/加载事件
在 ember data内置脏关系跟踪之前,我们推出了自己的。升级到 Ember/Ember Data 2.4.3(从相当旧的版本)后,我们的自定义解决方案停止工作。
问题归结为知道何时将记录的关系状态快照作为“原始”状态,我们可以将其与以后的状态进行比较。
假设适配器的有效负载包括以下内容:
在ready
结果记录的挂钩中,并使用新的引用 API,我希望能够说如下内容:
但这似乎不起作用——commentIds
是一个空数组。
(请注意,观察该isLoaded
属性似乎也没有给我想要的东西——记录已经处于事件触发loaded
时的状态。)ready
基本上,我希望有一个relationshipsLoaded
事件,当记录的关系已相对于适配器的有效负载填充时触发。根据从适配器返回的数据,相关记录本身可能不可用或不加载,但这不应该影响记录的关系状态。
经过一番探索后,我发现挂在商店的后备箱中会提供一些似乎有效的东西:
但这显然是粗略的,我不确定它是否真的保证了我希望它保证的东西。
那么:有没有真正的方法可以做到这一点?更好的方法?这是即将推出的功能吗?
作为参考,我做了一个 codepen 插图:https ://codepen.io/patternleaf/pen/Vazdxj
vb.net - 检查选择/文本是否在表单中更改
我有一个表单,上面有大约 20 个控件(ComboBox
、TextBox
等),我已经预先加载了数据。这将显示给用户,并使他们能够更改任何字段。
我不知道识别变化已经发生的最佳方式。经过一番研究,我发现TextBox.TextChanged
并设置了标志IsDirty = True
或类似的东西。
我不认为这将是 100% 防弹的,因为用户可能会更改该值,然后返回并将其更改为最初加载时的状态。我一直在考虑保存当前数据.Tag
,然后将其与.Text
用户单击“取消”时输入的数据进行比较,以简单地询问他们是否要保存更改。
这是我的代码:
这是用户单击“取消”时的代码:
这是一种有效的方法吗?可以依靠吗?如果有人有更好的想法,我很想听听。
vb.net - 验证是否在 TabPage 中进行了任何更改
所以我想知道是否有人可以给我一个好主意如何做某事。我的应用程序中有一个 tabControl - 我加载了一个页面 - TabPage1 - 大约有 25-30 个字段。在加载所有数据时 - 我运行一个循环将每个控制值保存到 .tag。我还有一个名为 isDirty() 的函数,它基本上检查每个控件的 ctr.tag.tostring <> ctr.text。我很难弄清楚如何构建一个快速处理程序来检查表单上的所有控件。我尝试使用 TagPage1.Validating,但这并没有做任何事情。
我的 isDirty() 函数看起来像这样......
我希望能够将此功能插入某个地方并对其进行调用,例如
我必须在每个控件的选择更改时调用它吗?
javascript - AngularJs,将对象标记为脏
我有一些从 Web api 检索的对象,并且是“可编辑的”。当用户编辑一个对象时,他能够更改一些字段。我想isDirty
在这些对象上维护一个字段,以了解它们何时被修改(isDirty==true
)。
我想知道我是否可以依靠 AngularJs 更改检测机制在我的对象上设置此字段?
c# - 定义属性是否由视图加载或设置
我正在尝试使用 Catel 进行“肮脏”的实施。
我有一个视图模型,有一个[Model]
属性和一些[ViewModelToModel]
映射到它。
我添加了一个布尔成员_canGetDirty
,当设置为true
允许视图模型属性提示服务进行保存时。
所以我的逻辑是,如果模型属性更改,_canGetDirty
设置为false
,因此视图模型属性更改而不会变脏,并且当模型完成更改时,我们设置_canGetDirty
为true
新的。
问题是模型属性的PropertyChanged
事件在视图模型属性更改之前被调用,因此_canGetDirty
总是正确的,并且每当我加载新模型时都会调用我的服务进行保存。
如何解决这个问题?
编辑:关于 Catel 在这种情况下如何工作的一些解释。
注册属性更改:
我们注册将通知更新的属性RegisterProperty
:
最后一个参数是注册属性发生变化时调用的回调函数。
自动更新模型的属性:
我们将属性设置为模型:
此类包含一些属性(Prop1、Prop2、Prop3)。Catel 允许我们通过将它们映射到 ViewModelToModel 来自动从视图模型更新它们:
javascript - 我可以避免使用 $scope 并让用户操作设置 AngularJS 脏位吗?
我在表单上有一个设置表(例如,复选框),用户可以添加和删除表行。 theForm.$dirty
如果用户更改设置(例如,选中或取消选中复选框),但如果将行添加到表中或从表中删除,则不会设置。我在https://plnkr.co/edit/sOXFnZjpkrcExvxGsEVg有一个例子
我是一个相对较新的 Angular 开发人员,但我被警告说,$scope
如果可以避免它,参考它不是最佳实践。我认为在这种情况下,我可以使控制器依赖于$scope
然后调用$scope.theForm.$setDirty()
修改表的函数。我不确定这是否是我唯一的办法,或者是否有更好的方法。