Ext.Model中的验证数据

时间:2013-08-23 17:12:02

标签: extjs extjs4

请帮帮我。 模型具有内置的验证支持,这些验证是针对Ext.data.validations中的验证器函数执行的。 我的代码:

 Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'name',    
            type: 'string'
        },{
            name: 'age',
            type: 'int'
        },{
            name: 'phone',
            type: 'string'
        },{
            name: 'gender',  
            type: 'string'
        },{
            name: 'username',
            type: 'string'
        }],
        validations: [
            {
            type: 'length',   
            field: 'name',    
            min: 2
            },{
            type: 'format',   
            field: 'username',
            matcher: /([a-z]+)[0-9]{2,3}/
            }]
    });

        var person = Ext.create('User', {
        name: 'Eugene',
        username: 'Popov',
        gender: 'F',
        age: 300,
        Married: false
    });
    console.log(person.get('name'))
    person.set('name','U');
     console.log(person.get('name'))//U
});

我读过该模型可以过滤数据。 他们的工作原理是什么? 为什么我可以在我的例子中写错错误的值? 谢谢!

1 个答案:

答案 0 :(得分:2)

模型验证不会自行拒绝更改。通过其他组件(如商店或网格编辑器)编辑模型可能会提供此功能。只有在模型上调用validateisValid方法时,验证才会生效。

如果您的模特是商店的一部分,您可以收听商店的update活动(link to docs)。在事件处理程序中,您可以验证模型并拒绝所需的任何更改。

// Simple demonstration
store.on('update', function (store, model, operation) {
    if (operation === Ext.data.Model.EDIT && !model.isValid()) {
        model.reject();
    }
});