Ext js事件在渲染器之后触发或调用

时间:2014-03-20 16:24:43

标签: html extjs render

我有一个使用渲染器功能的网格列。在此之后是否会触发或调用任何事件?我已经尝试了几个但是它们都在整个列上被调用,它们都在渲染器之前触发(甚至事件后渲染)

提前致谢

1 个答案:

答案 0 :(得分:1)

afterrender仅在列放置在页面上时触发一次。这是一个基本的ExtJS组件事件,几乎所有ExtJS组件都与用于网格列的渲染器函数有关,并且与之无关。

不完全确定你为此做了什么...但是如果我想在执行渲染器函数时触发事件,我会从渲染器函数本身触发自定义事件。像这样:

Ext.create('Ext.grid.Panel', {
    title: 'After Renderer Event Demo',
    store: Ext.getStore('DummyData'),
    columns: [{
        text: 'Column 1',  
        dataIndex:'aNumber',

        // dummy renderer function that fires an event after execution
        renderer: function(value) {

            // wrapping in a deferred function so that it fires AFTER
            Ext.defer(function() {
                this.fireEventArgs('aftercolumnrenderer', arguments);
            }, 10);

            if (value === 1) {
                return '1 person';
            }
            return value + ' people';
        }


    }, {
        text: 'Column 2',  
        dataIndex:'aString'
    }],
    width: 400,
    forceFit: true,
    renderTo: Ext.getBody()
});

我可以直接听取:

myColumn.on('aftercolumnrenderer', function(value, metaData, record, rowIndex, colIndex, store, view) {

    // do stuff

});

如果你正在使用ExtJS MVC,或者来自控制器的control功能。

另请参阅fireEventArgson method以供参考。