我有一个使用渲染器功能的网格列。在此之后是否会触发或调用任何事件?我已经尝试了几个但是它们都在整个列上被调用,它们都在渲染器之前触发(甚至事件后渲染)
提前致谢
答案 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功能。
另请参阅fireEventArgs和on method以供参考。