2017-04-19 5 views
0

Ich habe ein Panel mit dynamisch erstellten untergeordneten Panels mit Ext.Create und add() -Methode. Jetzt muss ich den eindeutigen Namen der Felder in jedem Panel festlegen. Ich versuche, einen eindeutigen ID (myId) -Parameter dafür zu verwenden, aber ich bekomme some_field [undefined] beim Senden von Formularen.Name des dynamischen Textfelds in ExtJS-Formular

Wie kann ich auf meineId-Eigenschaft zugreifen und sie in Feldnamen aus meiner Sicht verwenden? https://fiddle.sencha.com/#fiddle/1u74

Vielen Dank!

+1

Sie können es nicht in einer deklarativen Form so verwenden. Sie müssten diese Variable im Abschlussbereich erfassen. –

Antwort

0

Wenn Sie eine dynamische benutzerdefinierte Konfiguration in Ihrem Panel haben möchten, empfehle ich, das Panel innerhalb einer initComponent-Funktion aufzubauen.

 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); 
     } 
    }); 

Und wenn die Platte erstellt wird, wird die myid wie jede andere Konfiguration behandelt

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

ich dies in einem fiddle demonstriert haben Ihre Panel. Beachten Sie, dass in beiden Fällen in der Geige der name eine Zeichenfolge ist. "descr [10]" ist beispielsweise eine Zeichenfolge und verweist nicht auf ein Array.