• ExtJS 数据处理-Ext.data.field.field类型


    更新记录
    2022年7月21日 发布。
    2022年7月16日 从笔记迁移到博客。

    ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html

    Ext.data.field.field (字段)

    说明

    Ext.data.field.field类用于设置模型(model)的字段的数据类型
    字段可以是: 预定义类型 或 自定义类型

    ExtJS预定义字段类型:

    数据类型说明
    Auto自动(定义为Auto将不会发生自动转换)
    String字符串类型
    Boolean布尔类型
    Int整数类型
    Float浮点数类型
    Number数值类型
    Date日期类型

    备注:
    Date类型最好使用dateFormat配置项修饰日期格式
    如果指定的字段(fields)没有定义类型,则将使用默认类型“auto”
    字段类型定义为auto将不会发生自动转换

    定义模型中的字段

    使用fields属性设置模型中的字段

    语法格式如下:

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: '字段名称', type: '字段类型' },
    5. { name: '字段名称', type: '字段类型', convert: null }
    6. ]
    7. });

    字段值自动转换

    默认情况下,为字段(field)指定类型(type)后
    数据在保存到字段之前会自动转换为该类型
    自动转换由内置转换方法处理

    注意:如果字段的类型是auto,将不会进行自动转换
    注意:如果要避免其他字段类型的转换以提高性能,可以将convert指定为null

    实例:数据类型自动转换

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id', type: 'int', convert: null }, //取消自动转换
    5. { name: 'fulltime', type: 'boolean', defaultValue:true, convert:null },
    6. ]
    7. });

    字段自定义转换,可以使用convert配置项 或者 calculate配置项

    使用convert配置项

    1. Ext.define('PandaApp.model.PandaNodel', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. {
    5. name : 'StockValue',
    6. type : 'money',
    7. //自定义转换
    8. convert: function(value, record) {
    9. return record.get('Quantity') * record.get('Price');
    10. },
    11. //定义依赖的其他字段
    12. depends: ['Price', 'Quantity']
    13. }
    14. ]
    15. });

    使用calculate配置项

    1. Ext.define('PandaApp.model.PandaNodel', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. {
    5. name : 'StockValue',
    6. type : 'money',
    7. calculate: function(data) {
    8. return data.Quantity * data.Price;
    9. }
    10. }
    11. ]
    12. });

    字段默认值

    使用defaultValue属性即可

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'fulltime', type: 'boolean', defaultValue: true },
    5. ]
    6. });

    指定日期字段格式

    使用format属性

    1. {
    2. name : 'createDate',
    3. type : 'date',
    4. format : 'Y-m-d'
    5. }

    自定义字段类型(Custom Field Type)

    除了使用ExtJS预定义的字段类型,还可以自定义字段类型

    可以通过继承Ext.data.field.field类创建自定义字段类型

    1. Ext.define('PandaApp.field.PandaEmail', {
    2. extend: 'Ext.data.field.Field',
    3. alias: 'data.field.pandaEmail',
    4. validators: {
    5. type: 'format',
    6. matcher: /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    7. message: 'Wrong Email Format'
    8. },
    9. getType: function() {
    10. return 'pandaEmail';
    11. }
    12. });

    扩展ExtJS预定义的字段数据类型

    除了创建自定义字段类型,还可以扩展ExtJS预定义的字段数据类型
    可以继承的类型包括:

    1. Ext.data.field.Field
    2. Ext.data.field.Boolean
    3. Ext.data.field.Date
    4. Ext.data.field.Integer
    5. Ext.data.field.Number
    6. Ext.data.field.String

    语法:

    1. //自定义字段类型
    2. Ext.define('PandaApp.data.field.Gender', {
    3. extend: 'Ext.data.field.String',
    4. alias: 'data.field.gender',
    5. validators: {
    6. type: 'inclusion',
    7. list: [ 'female', 'male' ],
    8. message: '错误,值只可以是female或者male'
    9. },
    10. getType: function() {
    11. return 'gender';
    12. }
    13. });

    实例

    实例:字段定义

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id', type: 'int', convert: null },
    5. { name: 'firstName', type: 'string' },
    6. { name: 'lastName', type: 'string' },
    7. { name: 'fulltime', type: 'boolean', defaultValue: true, convert: null },
    8. { name: 'gender', type: 'string' },
    9. { name: 'phoneNumber', type: 'string' }
    10. ]
    11. });

    实例:数据类型自动转换

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id', type: 'int', convert: null },
    5. { name: 'firstName', type: 'string' },
    6. { name: 'lastName', type: 'string' },
    7. { name: 'fulltime', type: 'boolean', defaultValue: true, convert: null },
    8. { name: 'gender', type: 'string' },
    9. { name: 'phoneNumber', type: 'string' }
    10. ]
    11. });

    实例:数据类型自动转换

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id', type: 'int', convert: null },
    5. { name: 'firstName', type: 'string' },
    6. { name: 'lastName', type: 'string' },
    7. { name: 'fulltime', type: 'boolean', defaultValue: true, convert: null },
    8. { name: 'gender', type: 'string' },
    9. { name: 'phoneNumber', type: 'string' }
    10. ]
    11. });

    实例:定义映射

    使用mapping配置项即可

    实例:自定义字段类型(性别)

    1. //自定义字段类型
    2. Ext.define('PandaApp.data.field.Gender', {
    3. extend: 'Ext.data.field.String',
    4. alias: 'data.field.gender',
    5. validators: {
    6. type: 'inclusion',
    7. list: [ '女', '男' ],
    8. message: '错误,值只可以是female或者male'
    9. },
    10. getType: function() {
    11. return 'gender';
    12. }
    13. });
    14. //使用字段类型
    15. Ext.define('Student', {
    16. extend: 'Ext.data.Model',
    17. idProperty:'Id',
    18. fields: [
    19. { name: 'Id', type: 'int' },
    20. { name: 'Name', type: 'string' },
    21. { name:'Gender', type: 'gender' } //使用自定义字段类型
    22. ]
    23. });

    实例:自定义字段类型(邮箱)

    1. Ext.define('PandaApp.field.Email', {
    2. extend: 'Ext.data.field.Field',
    3. alias: 'data.field.email',
    4. validators: {
    5. type: 'format',
    6. matcher: /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    7. message: 'Wrong Email Format'
    8. }
    9. });
  • 相关阅读:
    SpringBoot实践(三十):简单分析SpringBoot自动配置和启动
    App移动端测试【10】Monkey自定义脚本案例
    关于 Docker
    解析vue.config.js文件
    软考高级系统架构设计师系列之:快速掌握软件工程核心知识点
    【大数据】Flink 之部署篇
    2.6基数排序(桶排序)
    def和class的区别
    深入C++02:深入学习C++还必须掌握的基础
    树莓派电脑虚拟机3设备连接
  • 原文地址:https://blog.csdn.net/weixin_38304160/article/details/125904842