2012-11-27 42 views
0

我嘗試過像renderafterrender這樣的事件,但不知何故,它們都在創建從renderer()defaultRenderer()的DOM元素之前拍攝。列DOM已被渲染後是否觸發了任何列事件?

Ext.define('MyApp.column.MyColumn', { 
    extend: 'Ext.grid.column.Column', 

    constructor: function() { 
    this.callParent(arguments); 

    this.on('afterrender', function() { 
     var oDomElement = Ext.get('MyColumn.MyApp.model.Record-0-ext-record-22'); 

     console.log('DOM-Element: ', oDomElement); 
    }); 
    }, 

    defaultRenderer: function(d, m, oRecord) { 
    return '<div id="MyColumn.' + oRecord.id + '" />'; 
    } 
}); 

當我事後檢查DOM,與MyColumn.MyApp.model.Record-0-ext-record-22存在ID的元素,但是oDomElementafterrender火災送花兒給人空。

+1

你確定'MyColumn.MyApp.model.Record-0-ext-record-22'是實際的DOM ID嗎?如在Firebug/Developer工具中看到的那樣? – Izhaki

+0

是的,我也手動生成了一些ID以保證安全,但即使我有'MyColumn- '這樣的東西,我也沒有任何元素。 –

回答

1

afterrender事件你會得到Ext.grid.column.Column將發生一旦已被呈現。但這與說法不一樣 - 當你渲染每一條記錄時,這將觸發defaultRenderer

換句話說,首先渲染網格,然後加載商店,每個記錄都被「渲染」。

+0

當我從渲染器返回的字符串是DOM元素時,是否有任何事件被觸發? –

+1

這將是當你的商店已被加載。你如何將記錄加載到網格中? – Izhaki

+0

,但在記錄加載之後,行纔會被創建。 –

相關問題