2013-08-23 2 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

Подтверждения модели не отклоняют изменения сами по себе. Редактирование модели через какой-либо другой компонент (например, магазины или редакторы сетки) может обеспечить эту функцию. Валидации включаются только при вызове методов модели validate или isValid.

Если ваши модели являются частью магазина, вы можете прослушать событие update магазина (link to docs). Внутри обработчика событий вы можете проверить модель и отклонить любые изменения, которые вы хотите.

// Simple demonstration 
store.on('update', function (store, model, operation) { 
    if (operation === Ext.data.Model.EDIT && !model.isValid()) { 
     model.reject(); 
    } 
}); 
Смежные вопросы