Sencha Touch - Modelo

El modelo es básicamente una colección de datos o campos, que individualmente se utiliza para almacenar algún tipo específico de información.

Como Sencha sigue la arquitectura basada en la parte superior de la base, las clases se pueden personalizar para realizar tareas específicas.

Ext.data.Model es la clase base que necesitamos extender al definir cualquier modelo.

Definiendo un modelo

Ext.define('Student', {
   extend: 'Ext.data.Model', config: {
      fields: [
         { name: 'id', type: 'int' },
         { name: 'name', type: 'string' }
      ]
   }
});

Campos

Los campos sirven para almacenar una pieza de información y la colección de la cual se llama modelo.

Principalmente definimos campos en el modelo que son de los siguientes tipos:

  • Integer
  • String
  • Boolean
  • Float

Syntax

{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'marks', type: Float },
{ name: 'newStudent', type: 'boolean' }

Validadores

En Sencha Touch, el modelo admite una serie de validaciones para mantener los datos en un formato correcto.

A continuación se muestran los validadores:

  • Presence - Asegura que no haya un valor vacío para el campo de nombre.

  • Length- Limita la longitud del campo. Tiene dos parámetros, mínimo y máximo, que definen la longitud mínima y máxima.

  • Format- Asegura que el valor del campo sea el de la expresión dada. En el siguiente ejemplo, no nos permitirá agregar ningún valor aparte de un número.

  • Inclusion- Asegura solo los valores que están definidos en la lista. En el siguiente ejemplo, solo permite M y F para el valor.

  • Exclusion- Asegura que no permitimos los valores que están definidos en la matriz de la lista. En el siguiente ejemplo, no permite cero como edad.

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