การเพิ่ม Event Listeners ให้กับคลาสขององค์ประกอบ XTemplate ในตาราง

ฉันมีคอลัมน์ของเซลล์ XTemplate ในแผงกริด ฉันจะเพิ่มเหตุการณ์การคลิกที่ใช้กับเซลล์ทั้งหมดในคอลัมน์นี้ได้อย่างไร สิ่งที่ฉันได้ลองไปแล้วใช้งานได้ แต่ใช้ได้กับการคลิกทั้งหมดบนเซลล์ใดก็ได้ในตาราง ดูเหมือนว่าฉันไม่สามารถจัดการตัวเลือกผู้รับมอบสิทธิ์เพื่อกรองคลาสขององค์ประกอบเฉพาะได้

รหัสของฉันจนถึงตอนนี้:

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 แหล่งที่มา


คำตอบ (3)


AFAIK, delegate ใช้งานได้เฉพาะเมื่อคุณกำหนดตัวจัดการให้กับองค์ประกอบ DOM (ไม่ใช่ส่วนประกอบ) ลองใช้รหัสนี้แทน:

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

คุณอาจต้องเปลี่ยน selType ของกริดเป็น cellmodel หลังจากนั้นคุณควรจะสามารถฟังการคลิกเซลล์ของมุมมองกริดได้ ดูเหมือนว่าจะไม่มีเอกสาร แต่ฉันพบว่าใช้ Ext.util.Obersvable.capture(Ext.getCmp('my-grid-id'), console.log) ซึ่งเป็นเคล็ดลับที่มีประโยชน์อย่างยิ่งในการรู้

person David Kanarek    schedule 27.02.2012

ขอบคุณสำหรับการตอบกลับทั้งหมด แต่ฉันสามารถแก้ไขปัญหาของฉันได้ด้วยวิธีแก้ไขปัญหานี้: Ext JS on คลิกเหตุการณ์

person MHTri    schedule 27.02.2012