Ext js事件触发或在渲染器后调用 [英] Ext js event fired or called after renderer

查看:1274
本文介绍了Ext js事件触发或在渲染器后调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



提前感谢

解决方案

afterrender 仅在页面布置在页面上时才会触发一次。这是一个基本的ExtJS组件事件,几乎所有ExtJS组件都具有和与网格列使用的渲染器功能无关。



不完全确定您正在尝试为...做这个...但是如果我想在我的渲染器函数执行时触发一个事件,我将从渲染器函数本身触发一个自定义事件。这样的东西:

  Ext.create('Ext.grid.Panel',{
title:'After Renderer事件演示'
存储:Ext.getStore('DummyData'),
列:[{
文本:'列1',
dataIndex:'aNumber',

//执行后触发事件的虚拟渲染器函数
renderer:function(value){

//包装在延迟函数中,以便触发AFTER
Ext.defer(function(){
this.fireEventArgs('aftercolumnrenderer',arguments);
},10);

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


},{
文本:'列2',
dataIndex:'aString'
}],
width:400,
forceFit:true,
renderTo:Ext.getBody )
});

我可以直接听:

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

// do stuff

});

或从控制器的

另请参阅 fireEventArgs on方法供参考。


I have a grid column which uses the renderer function. Are the any events fired or called after this? I have tried several ones but they all get called on the whole column and they all fire before the renderer (even event afterrender)

thanks in advance

解决方案

afterrender only fires once when the column is laid out on the page. It is a basic ExtJS component event that almost all ExtJS components have and doesn't relate to the renderer function used for grid columns.

Not totally sure what you're trying to do this for... but if I wanted to trigger an event whenever my renderer function was executed I would fire a custom event from the renderer function itself. Something like this:

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

I could listen for it directly with:

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

    // do stuff

});

Or from within a controller's control function if you're using ExtJS MVC.

Also see fireEventArgs and the on method for reference.

这篇关于Ext js事件触发或在渲染器后调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆