Sencha Touch - Modelo
O modelo é basicamente uma coleção de dados ou campos, que individualmente são usados para armazenar algum tipo específico de informação.
Como o Sencha segue a arquitetura baseada no topo da base, as classes podem ser customizadas para executar tarefas específicas.
Ext.data.Model é a classe base que precisamos estender ao definir qualquer modelo.
Definindo um modelo
Ext.define('Student', {
extend: 'Ext.data.Model', config: {
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' }
]
}
});
Campos
Os campos são para armazenar uma parte da informação e coleção da qual é chamada de modelo.
Principalmente, definimos campos no modelo que são dos seguintes tipos -
- Integer
- String
- Boolean
- Float
Syntax
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'marks', type: Float },
{ name: 'newStudent', type: 'boolean' }
Validadores
No Sencha Touch, o modelo suporta várias validações para manter os dados em um formato correto.
A seguir estão os validadores -
Presence - Garante que não haja nenhum valor vazio para o campo de nome.
Length- Limita o comprimento do campo. Possui dois parâmetros - mínimo e máximo - que definem o comprimento mínimo e máximo.
Format- Garante que o valor do campo esteja de acordo com a expressão fornecida. No exemplo a seguir, não nos permitirá adicionar qualquer valor além de um número.
Inclusion- Garante apenas os valores que estão definidos na lista. No exemplo a seguir, ele permite apenas M e F para o valor.
Exclusion- Garante que não permitimos os valores que são definidos na matriz da lista. No exemplo a seguir, ele não permite zero como idade.
Syntax
validations: [
{ type: validation type, field: on which the validation has to applied }
]
validations: [
{ type: 'presence', field: 'name' },
{ type: 'length', field: 'name', min: 5 },
{ type: 'format', field: 'age', matcher: /\d+/ },
{ type: 'inclusion', field: 'gender', list: ['male', 'female'] },
{ type: 'exclusion', field: 'name', list: ['admin'] }
],
// now lets try to create a new user with as many validation errors as we can
var newUser = Ext.create('User', {
name: 'admin', age: 'twenty-nine', gender: 'not a valid gender'
});
// run some validation on the new user we just created
var errors = newUser.validate();
console.log('Is User valid?', errors.isValid());
// returns 'false' as there were validation errors
console.log('All Errors:', errors.items);
// returns the array of all errors found on this model instance
console.log('Age Errors:', errors.getByField('age')); // returns the errors for the age field