ExtJS 6.2如何定义支持字符串/布尔混合类型的Model字段并实现校验
实现方案
你可以通过ExtJS内置的自定义函数校验器实现该规则,仅允许布尔值或字符串类型的取值通过校验,完整代码如下:
Ext.define('my_model', { extend : 'Ext.data.Model', fields: [{ name : 'name', type : 'string', unique : true }, { name : 'value', convert(value) { switch (value) { case 'Y': return true; case 'N': return false; default : return value; } } }], validators: { value: { type: 'function', message: '取值只能是布尔值(true/false)或字符串', validator: function(val) { // 符合布尔类型或字符串类型则校验通过 return Ext.isBoolean(val) || Ext.isString(val) ? true : this.message; } } } });
补充说明
- 这里用ExtJS内置的
Ext.isBoolean()、Ext.isString()做类型判断,比原生typeof兼容性更好,能覆盖框架内部类型转换的边缘场景。 - 如果业务需要排除空字符串,只需调整字符串判断逻辑即可,比如改为
Ext.isString(val) && val.trim() !== ''。 - 自定义校验器规则为:校验通过返回
true,不通过返回错误提示字符串即可。
内容的提问来源于stack exchange,提问作者user5507535
相关产品推荐
相关产品推荐

