Sencha Touch - Modèle

Le modèle est essentiellement une collection de données ou de champs, qui sont utilisés individuellement pour stocker un type spécifique d'informations.

Comme Sencha suit l'architecture basée sur le dessus de la base, les classes peuvent être personnalisées pour effectuer des tâches spécifiques.

Ext.data.Model est la classe de base que nous devons étendre lors de la définition de n'importe quel modèle.

Définition d'un modèle

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

Des champs

Les champs sont destinés à stocker une information dont la collection est appelée modèle.

Nous définissons principalement des champs dans le modèle qui sont des types suivants -

  • Integer
  • String
  • Boolean
  • Float

Syntax

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

Validateurs

Dans Sencha Touch, le modèle prend en charge un certain nombre de validations pour conserver les données dans un format correct.

Voici les validateurs -

  • Presence - S'assure que ce n'est pas une valeur vide pour le champ de nom.

  • Length- Limite la longueur du champ. Il a deux paramètres - min et max - qui définissent la longueur minimale et maximale.

  • Format- S'assure que la valeur du champ est conforme à l'expression donnée. Dans l'exemple suivant, cela ne nous permettra pas d'ajouter une valeur en dehors d'un nombre.

  • Inclusion- Assure uniquement les valeurs définies dans la liste. Dans l'exemple suivant, il n'autorise que M et F pour la valeur.

  • Exclusion- Garantit que nous n'autorisons pas les valeurs définies dans le tableau de liste. Dans l'exemple suivant, il n'autorise pas zéro comme âge.

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