1

请帮帮我。模型具有对验证的内置支持,这些验证是针对 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
});

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

4

1 回答 1

2

模型验证本身不会拒绝更改。通过其他一些组件(如商店或网格编辑器)编辑模型可能会提供此功能。validate只有在模型上调用orisValid方法时,验证才会发挥作用。

如果您的模型是商店的一部分,您可以监听商店的update事件(链接到文档)。在事件处理程序中,您可以验证模型并拒绝您想要的任何更改。

// Simple demonstration
store.on('update', function (store, model, operation) {
    if (operation === Ext.data.Model.EDIT && !model.isValid()) {
        model.reject();
    }
});
于 2013-08-23T17:29:56.353 回答