2013-08-23 95 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(); 
    } 
});