ExtJS 数据处理-Validations(验证器)


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

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

Validations(验证器)

验证器说明

模型支持模型数据的验证
定义验证在模型中使用validators属性即可

validators: {
    //单个验证条件
    '字段名称': '验证类型',
    //单个验证条件(详细)
    '字段名称': { type: '验证条件2', 附加Key: 附加Value },
    //多个验证条件
    字段名称: [
       { type: '验证条件1' }, 
       { type: '验证条件2', 附加Key: 附加Value }
    ]
}

ExtJS预定义的验证器

以下是ExtJS预定义的验证器

presence:		这确保特定字段存在一个值,即:非空(not null)、非空字符串''
length:			验证数据的长度,配合最大(max)和最小(min)长度使用
inclusion:		验证数据包含在指定的集合中(list of values),配合list使用
exclusion:		验证数据不在指定的集合中(list of values),配合list使用
email			验证数据邮箱地址
format			验证数据正则表达式,配合matcher使用
range			验证数据的范围,配合最大(max)和最小(min)长度使用

模型类型的实例,可以使用isValid()方法,检测模型中的数据是否满足验证条件:

modelInstance.isValid()

模型验证器内部结构

image

image

image

image

实例:

实例:验证数据不为空(presence)

Ext.define('Employee', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id',type: 'int',convert: null },
        { name: 'firstName', type: 'string' }
    ],
    validators: {
        firstName: [
            { type: 'presence' }, 
            { type: 'length', min: 2 }
        ]
    }
});

实例:验证数据长度(length)

Ext.define('MyApp.model.User', {
    extend: 'Ext.data.Model',
    fields: ...,

    validators: {
        name: [
            { type: 'length', min: 7 },
        ]
    }
});

实例:验证数据排除(exclusion)

Ext.define('MyApp.model.User', {
    extend: 'Ext.data.Model',
    fields: ...,

    validators: {
        name: [
            { type: 'exclusion', list: ['Bender'] }
        ]
    }
});

实例:验证数据包含(inclusion)

Ext.define('MyApp.model.User', {
    extend: 'Ext.data.Model',
    fields: ...,

    validators: {
        name: [
            { type: 'inclusion', list: ['Bender'] }
        ]
    }
});

实例:验证数据满足正则(format)

Ext.define('Employee', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id',type: 'int',convert: null },
        { name: 'phoneNumber', type: 'string' },
    ],
    validators: {
        phoneNumber: {
            type: 'format',
            matcher: '/^[(+{1})|(00{1})]+([0-9]){7,10}$/'
        }
    }
});

实例:验证性别

gender: {
	type: 'inclusion',
	list: ['男', '女']
},

实例:单字段多个验证器

Ext.define('MyApp.model.User', {
    extend: 'Ext.data.Model',
    fields: ...,
    validators: {
        name: [
            'presence',
            { type: 'length', min: 7 },
            { type: 'exclusion', list: ['Bender'] }
        ]
    }
});

实例:多个字段验证器

Ext.define('Employee', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id',type: 'int',convert: null },
        { name: 'firstName', type: 'string' },
        { name: 'lastName', type: 'string'},
        { name: 'fulltime', type: 'boolean', defaultValue: true, convert: null },
        { name: 'gender', type: 'string' },
        { name: 'phoneNumber', type: 'string' },
    ],
    validators: {
        firstName: [
            { type: 'presence' }, 
            { type: 'length', min: 2 }
        ],
        lastName: [
            { type: 'presence' }, 
            { type: 'length', min: 2 }
        ],
        phoneNumber: {
            type: 'format',
            matcher: '/^[(+{1})|(00{1})]+([0-9]){7,10}$/'
        },
        gender: {
            type: 'inclusion',
            list: ['Male', 'Female']
        },
    }
});

实例:定义模型验证并实例化模型并验证数据是否符合要求

//定义模型
Ext.define('Student',{
    extend: 'Ext.data.Model',
    fields: [
        {name:'id', type:'int'},
        {name:'name',tyle:'string'}
    ],
    validators: {
        id:'presence',
        name: { type:'length',min: 3 }
    }
});

//创建实例
var studentData = Ext.create('Student',{
    id:666,
    name:'panda'
});

//验证模型的数据是否有效
if(studentData.isValid())
{
    var id = studentData.get('id');
    var name = studentData.get('name');
    console.log(id);
    console.log(name);
}
else
{
    console.log('student data is not valid');
}

实例:验证模型数据是否有效

//定义模型
Ext.define('User',{
    extend: 'Ext.data.Model',
    fields: [
        {
            name: 'id',
            type: 'int'
        },
        'name',
        'age'
    ],
    validators: { //定义验证器
        name: 'presence',
        age: [
            {type: 'presence',min: 3, max: 4},
        ]
    }
})
//创建模型实例
var user = Ext.create('User',{
    id: 666,
    name: 'panda',
    age: 666
});
//验证是否有效数据
console.log(user.isValid());

实例:获得验证错误信息

注意:validate()方法返回的类型是Ext.data.ErrorCollection

if (myclient.isValid()){//Step 4
    console.log("myclient model is correct");
}
else{
    //Step 5
    console.log("myclient model has errors");
    //获得错误信息
    var errors = myclient.validate();
    errors.each(function(error){
        console.log(error.field,error.message);
    });
}

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/275770.html

(0)
上一篇 2022年7月21日
下一篇 2022年7月21日

相关推荐

发表回复

登录后才能评论