Рендеринг компонентов extjs в столбец сетки после запуска рендерера
У меня есть столбец сетки с пользовательским средством визуализации. Вот так.
grid.healthCheckColumn = Ext.create('Ext.grid.column.Column', {
id: 'healthCheckColumn',
header: 'Health Check',
renderer: Ext.bind(me.renderHealthCheckColumn, me)
});
Этот рендерер возвращает div с классом 'health-check-button', и это прекрасно. Вот моя проблема.
Как только средство рендеринга заполнит ячейку сетки элементом div, я хочу, чтобы сработало событие, которое позволит мне визуализировать компонент ExtJS для этого элемента div. Вот компонент, который я хочу визуализировать:
var button = Ext.create('Ext.button.Button', {
ui: 'plain',
disable: val,
text: 'Analyze',
renderTo: div_element
});
Причина, по которой это не сработает, заключается в том, что компонент ExtJS может отображать только элемент, который уже находится в DOM, и этот элемент не будет существовать до тех пор, пока не будет запущен рендерер.
Очевидно, что я мог бы вызвать Ext.defer() в моем рендерере, чтобы вызвать событие после тайм-аута, но это кажется хакерским. Это решение (для аналогичного вопроса) было предложено здесь:
Событие Ext js сработало или вызвано после рендерера
Я попытался выяснить порядок, в котором происходят события, и в какой последовательности, но это не задокументировано, и я не могу понять смысл исходного кода ExtJS. beforerender
, render
, а также afterrender
весь огонь до запуска рендера, что бесполезно.
Какие-либо предложения? Я использую ExtJS 4.3.