validation - 如何在 Aurelia 验证中接受具有相互依赖的属性的空值?
问题描述
我正在尝试验证一些相互依赖的温度值,但我也想为它们接受空值。例如我有以下代码:
VadliationRules.customRule(
"minT",
(value, obj: Object, min) => {
let converted = parseFloat(value)
return converted >= min && converted < obj.MaxTemperature
},
'');
ValidationRules.customRule(
"maxT",
(value, obj: Object, max) => {
let converted = parseFloat(value)
return converted <= max && converted > obj.MinTemperature
},
'');
ValidationRules
.ensure((p: Object) => p.MinTemperature)
.satisfiesRule('minT', -15.0)
.withMessageKey('min_temp')
.ensure((p: Object) => p.MaxTemperature)
.satisfiesRule('maxT', 50.0)
.withMessageKey('max_temp')
.on(Object)
let MinTemperature : number;
let MaxTemperature : number;
我尝试了以下选项,但它们似乎不起作用(因为我认为依赖于其他属性)
// Example 1
VadliationRules.customRule(
"minT",
(value, obj: Object, min) => {
let converted = parseFloat(value)
return converted >= min && converted < obj.MaxTemperature || converted == undefined || obj.MaxTemperature == null
},
'');
// Example 2
VadliationRules.customRule(
"minT",
(value, obj: Object, min) => {
let converted = parseFloat(value)
return converted >= min && converted < obj.MaxTemperature || converted == undefined || converted.toString() == ""
},
'');
如何在满足对其他属性的依赖的同时接受两个字段的空值?
解决方案
尝试以下
return converted >= min && (converted < obj.MaxTemperature || obj.MaxTemperature == null)
- 不使用括号时,当您的 obj.MaxTemperature == null 时,无论您的第一次检查如何,它都会通过
- 仅供参考,obj.MaxTemperature == null 还检查未定义,因此您可以省略该部分(请参阅http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3)
推荐阅读
- flutter - 展开的行
- wordpress - WORDPRESS - 在functions.php中包含CSS不起作用
- freebsd - 如何在 FreeBSD 中构建自定义目录结构?
- c++ - 我如何创建一个线程安全的 QOffscreenSurface 供 OpenGL 使用
- java - 是否有以这种方式拆分字符串的java函数?
- javascript - WINTER BASH 2020 季节形象的动画
- java - 为什么内部类不能访问在普通方法和静态方法之间重载的外部类方法?
- javascript - 在javascript中制作按钮
- sas - Sas - 如何创建一个变量,其值为标志的名称等于 1
- java - 尝试编译 java 文件时获取 java.nio.file.InvalidPathException: Illegal char <*>