You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:15:07