ExtJS: получить абсолютную позицию динамических контейнеров

Мне нужно выяснить абсолютную позицию динамически создаваемых контейнеров, которые добавляются на панель.

var activityContainer = Ext.create('Ext.Container', {
    html: activityName,
    width: ACTIVITY_WIDTH,
    height: ACTIVITY_HEIGHT,
    margin: topMargin + ' 0 0 0',
    cls: 'activity',
    listeners: {
        render: function () {
             this.getEl().dom.title = 'Name: ' + activity.name + reqQuicktip;
        },
        afterrender: function() {
             console.log('Y: ' + this.getEl().getTop() +' X: '+ this.getEl().getLeft())
        }
     }
})

tradePanel.add(activityContainer);

Я узнал, что могу получить позицию только тогда, когда контейнеры уже отрендерены. Таким образом, я использую слушатель пострендер. Методы getY()/getTop() и т. Д. Работают не так, как я ожидал. Я всегда получаю 1 для моей координаты x и не имею адекватных координат y.

Что мне здесь не хватает?

Спасибо!

1 ответ

В зависимости от того, как вы реализуете свою панель, ключевое слово this может возвращать информацию для неправильной панели.

Вы создаете своего слушателя так:

afterrender: function(component) {
    console.log('Y: ' + component.getY() +' X: '+ component.getX());
}

Вот скрипка для тестирования: https://fiddle.sencha.com/

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