Javascript aurelia验证分离自定义元素
我正在尝试使用Javascript aurelia验证分离自定义元素,javascript,validation,aurelia,Javascript,Validation,Aurelia,我正在尝试使用aurelia验证进行客户端验证。尽管客户端验证工作得很好,但它强制重新评估视图中的自定义元素。例如,典型的流程如下所示(自定义元素的分离顺序/“解除绑定ed”可能会不时不同): 当然,重新激活自定义元素也意味着从服务器获取以有意义的方式呈现元素所需的数据(例如,下拉列表中的选项或列表中的项目等) 关于应用程序的更多细节:验证规则是在服务器端(WebAPI)定义的,端点可以传递“实体”类型的规则。然后,这些规则被转换为客户端的aurelia验证规则。然后简单地将这些规则用于我的目标
aurelia验证
进行客户端验证。尽管客户端验证工作得很好,但它强制重新评估视图中的自定义元素。例如,典型的流程如下所示(自定义元素的分离顺序
/“解除绑定
ed”可能会不时不同):
当然,重新激活自定义元素也意味着从服务器获取以有意义的方式呈现元素所需的数据(例如,下拉列表中的选项或列表中的项目等)
关于应用程序的更多细节:验证规则是在服务器端(WebAPI)定义的,端点可以传递“实体”类型的规则。然后,这些规则被转换为客户端的aurelia验证
规则。然后简单地将这些规则用于我的目标实体对象(根据场景,可以是任何“实体”类型;当然,规则也会相应地被提取)。示例代码如下所示:
this.clientRules = this.ruleAdapter.toAureliaRules(validationRules);
this.validationController.addObject(this.targetEntity, this.clientRules);
// and finally invoke validate when required
this.validationController.validate()
请注意,targetEntity
也被自定义元素使用
我不知道如何隔离问题并寻找根本原因。任何建议都很好
更新:考虑到验证期间正在修改目标实体
,我还尝试了以下代码:
const dummyEntity = JSON.parse(JSON.stringify(this.entity));
this.validationController.validate({ object: dummyEntity, rules: this.clientRules });
// naturally, while trying this code I removed the addObject call
然而,这也不起作用:(
2018年1月12日更新:感兴趣的用户也可以继续讨论
其他发现:如果有帮助,共享另一个发现。在调试过程中,似乎在开始验证之前,即控件到达之前,自定义元素已分离。那么根本原因是否可能在其他地方
解决方案:对不起。我的错:p这确实与aurelia验证无关。解决方案是将if.bind
更改为show.bind
:D如果您共享了一个最小可行的示例,这个问题可以更快地解决。因此,即使您的代码是私有的,也尝试添加一些示例代码,只是简单的div显示HTML结构和一些虚拟验证规则。@Jessedbruijne如果可能的话,我会这样做的。不是吗?此外,我已经发布了部分内容,这似乎与我的问题有关。
const dummyEntity = JSON.parse(JSON.stringify(this.entity));
this.validationController.validate({ object: dummyEntity, rules: this.clientRules });
// naturally, while trying this code I removed the addObject call