Ext js事件触发或在渲染器后调用 [英] Ext js event fired or called after renderer
问题描述
提前感谢
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 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: I could listen for it directly with: 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屋!
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.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
});