【发布时间】:2018-01-26 11:21:17
【问题描述】:
我看到 THIS 关于我正在验证的表单是否已更改的问题。
但是它与 Aurelia 验证无关,我想在单击保存按钮时验证表单是否有任何更改。我不想在服务器上做。
我所做的是保存我最初获取的值,以便进行比较。
fetch("/api/Client/editClient/" + parms.id, {
method: "GET",
headers
})
.then(response => response.json())
.then(data => {
this.client.deserialize(data);
this.originalClient === this.client;
})
原始客户端是未修改的对象。
我创建了一个自定义验证函数,但它没有按预期工作。
我想我可以使用当前值,然后将其与原始值进行比较。
ValidationRules.customRule(
'changesExist',
(value, obj, fetchedEntity) =>
fetchedEntity != value,
'No changes detected'
);
当我尝试使用它时,我发现它出错了:
// Validation Rules.
ValidationRules
.ensure(a: ClientDetails) => a).satisfiesRule('changesExist', this.originalClient);
我不确定如何完成这项工作。我想要的是一个将 orginalClient 对象与要发送回服务器的对象进行比较的验证。这样我可以检查是否有理由将其发送回可以将其保存到数据库中...
【问题讨论】:
-
this.client.deserialize(data);是做什么的?另外你为什么这样做:this.originalClient === this.client;?总之,fetchedEntity != value这一行做了一个对象引用比较。 -
关于反序列化,我的印象是我需要这样做才能将其应用于表单。它在激活功能中。我想比较这两个对象。因此这是错误的。我需要获取数据的副本,以便最后比较两者。
-
没错,这就是我想向您指出的。
标签: aurelia