我有一个对象,任何数据对象(例如,Person)被序列化并下载到用户界面。用户单击带有或不带更改的保存按钮。
在UI上检测用户已更改对象的最佳方法是什么?请注意,该对象可能具有子记录,并且对这些记录的更改还应将“需要保存”属性设置为true。
在构建我们自己的逻辑之前,有没有一种标准的方法呢?我们的客户端是Angular 1.6,服务器站点是带有RESTEASY的Java 1.8。但我认为这是任何使用序列化的平台的常见问题。
答案 0 :(得分:0)
该解决方案需要服务器和客户端站点更改:
如果您的Entity对象从一个对象继承,这会有所帮助。在我们的系统中,所有模型对象都从一个名为JsonModelObject的类继承。我们引入了一个布尔值jsonDirty字段,初始化为false。因此,所有序列化对象自动下降到角度前端,此标志设置为false。
客户端站点:它还可以帮助系统的所有CRUD操作调用常用方法。在我们的例子中,当从服务器站点收到记录时,我们使用JSON.stringify并将其存储为字符串,例如:
$scope.editRecordForChangeCheck = JSON.stringify($scope.editRecord);
保存时,我们检查两个表单的$ dirty标志(如果是angular),并将保存的记录的JSON.stringify与初始$ scope.editRecordForChangeCheck进行比较。请注意,在有角度的情况下,如果存在以编程方式更改的字段,则角度$ dirty标志不会设置为true。
var isDirty = $ scope.form。$ dirty || ($ scope.editRecordForChangeCheck!== JSON.stringify($ scope.editChildRecord)); if(isDirty){ $ scope.editRecord.jsonDirty = true; //在这里你称呼你的api ... }