Событие Ext js сработало или вызвано после рендерера
У меня есть столбец сетки, которая использует функцию рендеринга. Какие-нибудь события происходят или вызваны после этого? Я пробовал несколько из них, но все они вызываются на весь столбец, и все они запускаются перед рендерингом (даже после события, после)
заранее спасибо
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.
Также смотрите fireEventArgs и метод on для справки.