Рендеринг компонентов 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.

0 ответов

Другие вопросы по тегам