2013-07-16 14 views
8

Mam składnik następująco:ExtJS - Jak uzyskać wartość elementu komponent

{ 
    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(); 
       } 
      } 
     } 
    }] 
} 

Chcę dostać drugą wartość poz fieldLabel (w tym przypadku wartość).

  • Jak mogę uzyskać tę wartość pola poza funkcją onReady?
  • Jak mogę zmienić tę etykietę pola z nową wartość (chcę zmienić fieldlabel z wybraną wartość combobox)

UPDATE Próbowałem następujące:

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

Console Output

Odpowiedz

16

Kilka sposobów, ale powszechne jest użycie Ext.ComponentQuery:

Podaj swoje pole itemId w swojej konfiguracji, np. itemId: 'theField':

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

dodać na change słuchacza do combo, można używać w górę iw dół (które są również zapytania elementów)

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

Pamiętaj żadnych ustawień konfiguracyjnych w JS wew dostanie setter i getter, a więc fieldLabel ma metody getFieldLabel() & setFieldLabel(s).

edit powyżej jest tylko z ext js 4.1+ z ext js 4.0+ można zrobić:

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

Nothing więcej do powiedzenia. +1 – sra

+0

Myślę, że robię coś źle. Kiedy próbowałem uzyskać pole z 'ComponentQuery', widzę wartości pola w konsoli. Ale ani 'getFieldLabel' ani' setFieldLabel' nie działa. Otrzymuję komunikat "setFieldLabel" nie jest błędem funkcji! Masz jakiś pomysł? –

+0

drodzy @sra, macie też jakiś pomysł? –

1

uzyskać combobox zaznaczony element poza słuchacza kombi

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

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

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

     }); 
Powiązane problemy