Menambahkan Event Listener ke kelas elemen XTemplate dalam kotak

Saya memiliki kolom sel XTemplate di Panel Grid. Bagaimana cara menambahkan acara klik/pendengar yang berlaku untuk semua sel di kolom khusus ini? Apa yang saya coba sejauh ini berhasil tetapi berlaku untuk SEMUA klik pada sel APAPUN di kisi. Sepertinya saya tidak bisa memanipulasi opsi delegasi untuk memfilter kelas elemen tertentu.

Kode saya sejauh ini:

columns:[

...

{
    xtype: 'templatecolumn',
    text: 'Approve2',
    flex: 1,
    dataIndex: 'Approved',
    align: 'center',
    sortable: false,
    tpl: '<input type="checkbox" class="approveCheckbox" />'
},

...

],
initComponent: function () {
    this.on('itemclick', this.storeCheckboxVal, this, { delegate: '.approveCheckbox' });
},

...

,
storeCheckboxVal: function (view, record, item, index, event) {
        alert(record.data['ID']);
}

person MHTri    schedule 27.02.2012    source sumber


Jawaban (3)


AFAIK, delegate hanya berfungsi jika Anda menetapkan pengendali ke Elemen DOM (bukan Komponen). Coba kode ini sebagai gantinya:

initComponent: function () {
    this.mon(this.el, 'click', this.storeCheckboxVal, this, { delegate: '.approveCheckbox' });
},
person Molecular Man    schedule 27.02.2012

Anda mungkin perlu mengubah selType grid Anda menjadi cellmodel. Setelah itu, Anda seharusnya bisa mendengarkan cellclick tampilan grid. Tampaknya ini tidak terdokumentasi, tetapi saya menemukannya menggunakan Ext.util.Obersvable.capture(Ext.getCmp('my-grid-id'), console.log) Yang merupakan trik yang sangat berguna untuk diketahui.

person David Kanarek    schedule 27.02.2012

Terima kasih atas semua balasannya, namun saya telah berhasil menyelesaikan masalah saya melalui solusi ini: Ext JS aktif klik acara

person MHTri    schedule 27.02.2012