2017-04-19 2 views
0

J'ai un panneau avec des panneaux enfants créés dynamiquement à l'aide de la méthode Ext.Create et add(). Maintenant, je dois définir le nom unique des champs dans chaque panneau. J'essaye d'utiliser un paramètre ID (myId) unique pour cela mais je reçois un certain champ [undefined] sur le formulaire.Nom de champ de texte dynamique dans le formulaire ExtJS

Comment puis-je accéder à la propriété myId et l'utiliser dans les noms de champs à mon avis? https://fiddle.sencha.com/#fiddle/1u74

Merci beaucoup!

+1

Vous ne pouvez pas l'utiliser comme cela dans une forme déclarative. Vous auriez besoin de capturer cette variable dans la portée de fermeture. –

Répondre

0

Si vous souhaitez avoir une configuration personnalisée dynamique dans votre panneau, je vous recommande de construire le panneau dans une fonction initComponent.

 Ext.define('MyPanel', { 
     extend: 'Ext.panel.Panel', 
     initComponent: function() { 
      var myid = this.config.myId; // <--- This is a custom config 
      this.items = [ 
       { 
        xtype: 'textarea', 
        fieldLabel: 'Description', 
        name: 'descr['+ myid +']' // <--- Here it is used 
       } 
      ]; 
      this.callParent(arguments); 
     } 
    }); 

Et lorsque le panneau est créé, le myId est traité comme tout autre config

Ext.create('MyPanel', { 
     myId: 10 
    }); 

Je l'ai démontré dans un fiddle utilisant votre panneau. Notez que dans les deux cas dans le violon, le name est une chaîne. "descr [10]" par exemple est une chaîne, et ne fait pas référence à un tableau.