2013-08-23 143 views
1

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

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 
}); 

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

回答

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(); 
    } 
});