I. Explications

La méthode de conversionconvert d'un champ du modèle est appelée lorsqu'une valeur est définie (pas lue), ce qui n'est pas le mieux.

Cette méthode est également appelée lorsqu'un modèle est construit, avant que les associations ne soient chargées. Ce qui signifie que vous ne devriez pas l'utiliser comme un pseudo-accesseur.

II. Champ virtuel

Voici comment faire un champ virtuel sur un modèle :

 
Sélectionnez
Ext.define('My.model.Contact', {
  extend:'Ext.data.Model',
 
  getfull_name: function(){
    return this.get('first_name') + ' ' + this.get('last_name');
  },
 
  fields:[
    'first_name',
    'last_name'
  ],
 
  /* réécriture de Model.get */
  get: function(field){
    if(this['get'+field]) return this['get'+field](); //si get<field> existe, l'appeler
    else return this.callParent(arguments); //sinon, utiliser le get normal
  }
});


Utilisation :

 
Sélectionnez
var contact = Ext.create('My.model.Contact');
contact.set('first_name');
contact.set('last_name');
 
console.log(contact.get('full_name'));

III. Remerciements

Cet article a été publié avec l'aimable autorisation de Neil McGuigan. L'article original peut être lu sur le blog ExtJS TutorialsExtJS Tutorials : Getters on ModelsGetters on Models.
Je remercie également ram-0000 pour sa relecture rapide.