2013-07-16 9 views
8

mi hanno una componente come segue:ExtJS - Come ottenere valore dell'elemento componente

{ 
    xtype: 'fieldcontainer', 
    layout: 'hbox', 
    id: 'article-level-container', 
    defaultType: 'textfield', 
    fieldDefaults: { 
     labelAlign: 'top' 
    }, 
    items: [{ 
     fieldLabel: 'LEVEL', 
     name: 'artLevel', 
     inputWidth: 216, 
     margins: '0 5 5 0', 
     allowBlank: false, 
     fieldStyle: 'text-align: right; font-size: 13pt; background-color: #EAFFCC;' 
    }, { 
     fieldLabel: 'VALUE', 
     name: 'artValue', 
     inputWidth: 216, 
     allowBlank: false, 
     blankText: 'zorunlu alan, boş bırakılamaz', 
     fieldStyle: 'text-align: right; font-size: 13pt; background-color: #EAFFCC;', 
     listeners: { 
      change: function(textfield, newValue, oldValue) { 
       if (oldValue == 'undefined' || newValue == '') { 
        Ext.getCmp('btnArticleSave').disable(); 
       } else { 
        Ext.getCmp('btnArticleSave').enable(); 
       } 
      } 
     } 
    }] 
} 

voglio ottenere secondo valore oggetto fieldLabel (in questo caso valore).

  • Come posso ottenere questo valore di campo al di fuori della funzione onReady?
  • Come posso cambiare questa etichetta campo con il nuovo valore (voglio cambiare fieldlabel con valore combobox selezionato)

UPDATE ho provato la seguente:

var artField = Ext.ComponentQuery.query('#articleValueField'); 
console.log(artField); 

Console Output

risposta

16

Alcuni modi, ma comune, è utilizzare Ext.ComponentQuery:

Assegna al campo un itemId nella configurazione ad es. itemId: 'theField':

var field= Ext.ComponentQuery.query('#theField')[0]; 
field.setFieldLabel(valueFromCombo); 

Aggiungi un on change ascoltatore alla vostra combo, è possibile utilizzare su e giù (che sono anche le query di componenti)

listeners: { 
    change: function(combo) { 
    var form = combo.up('#form'); 
    var field = form.down('#theField'); 
    field.setFieldLabel(lookupValueFromCombo); 
    } 
} 

ricordare la configurazione di configurazione di JS ext otterrà un setter e getter, quindi fieldLabel ha metodi getFieldLabel() & setFieldLabel(s).

modificare sopra è solo con Ext JS 4.1+ con Ext JS 4.0 + si può fare:

field.labelEl.update('New Label'); 
+2

Niente altro da dire. +1 – sra

+0

Penso di star facendo qualcosa di sbagliato. Quando provo a ottenere il campo con 'ComponentQuery', posso vedere i valori del campo nella console. Ma né 'getFieldLabel' né' setFieldLabel' non funzionano. Sto ottenendo 'setFieldLabel' non è un errore di funzione! Hai qualche idea? –

+0

caro @sra hai qualche idea pure? –

1

per ottenere l'elemento selezionato casella combinata di fuori del combo ascoltatore

yourComboboxName.on('change', function (combo, record, index) { 

      alert(record); // to get the selected item 

      console.log(record); // to get the selected item 

     }); 
Problemi correlati