2013-07-16 16 views
8

Tôi có một thành phần như sau:ExtJS - Làm thế nào để có được giá trị mục thành phần

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

Tôi muốn có được thứ hai giá trị mục fieldLabel (trong trường hợp này VALUE).

  • Làm cách nào để nhận giá trị trường này ngoài chức năng onReady?
  • Làm thế nào tôi có thể thay đổi nhãn lĩnh vực này với giá trị mới (Tôi muốn thay đổi fieldlabel với giá trị combobox chọn)

CẬP NHẬT tôi thử như sau:

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

Console Output

Trả lời

16

Một vài cách nhưng thông thường là sử dụng Ext.ComponentQuery:

Cung cấp cho trường của bạn itemId trong cấu hình của nó, ví dụ: itemId: 'theField':

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

Thêm vào change nghe để kết hợp, bạn có thể sử dụng lên và xuống (mà cũng là các truy vấn thành phần)

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

Ghi bất kỳ cài đặt cấu hình trong js ext sẽ nhận được một setter và getter, do đó fieldLabel có các phương thức getFieldLabel() & setFieldLabel(s).

chỉnh sửa trên chỉ là với ext js 4.1+ với ext js 4.0 + bạn có thể làm:

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

Không có gì nhiều hơn để nói. +1 – sra

+0

Tôi nghĩ mình đang làm điều gì đó sai. Khi cố gắng lấy trường bằng 'ComponentQuery', tôi có thể thấy giá trị của trường trong bảng điều khiển. Nhưng không phải 'getFieldLabel' cũng không' setFieldLabel' không hoạt động. Tôi nhận được 'setFieldLabel' không phải là một lỗi chức năng! Bạn còn ý kiến ​​nào không? –

+0

dear @sra bạn có ý tưởng gì không? –

1

để có được combobox chọn mục bên ngoài người nghe kết hợp

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

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

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

     }); 
Các vấn đề liên quan