Как изменить положение всплывающей подсказки в ExtJs 3.3 - PullRequest
1 голос
/ 28 апреля 2011

Я хочу изменить положение всплывающей подсказки, чтобы оно отображалось на кнопке.Я попробовал метод ниже, как упомянуто на форуме ExtJs.Это не работает, я не могу переопределить метод getTargetXY , подсказка отображается всегда в одной и той же позиции.Есть ли у вас решение?

this.desktopButton = new Ext.Button({
    icon: "arrow_in.png",
    scope: this,
    handler: this.desktopButtonHandler,
    tooltip: new Ext.ToolTip({
        text: 'Message',
        getTargetXY: function () {
            return [100, 100];
        }
    })
});

Ответы [ 2 ]

4 голосов
/ 30 апреля 2011

Ext элементы могут быть переданы только параметры конфигурации, как указано в документации; getTargetXY не является одним из этих вариантов.

Если вы хотите переопределить этот метод, у вас есть два варианта:

  • Переопределите все подсказки Ext, чтобы использовать новую функцию
  • Расширить существующий класс Tooltip для поддержки переопределения этого метода

Я бы не рекомендовал переопределять метод, поскольку это может иметь другие последствия. Однако я объясню, как это сделать.

Чтобы переопределить подсказку:

Ext.override(Ext.Tooltip, {
    getTargetXY: function() {
        return [100, 100]
    }
});

Чтобы расширить подсказку:

MyToolTip = Ext.Extend(Ext.Tooltip, {
    constructor: function(config) {
        var config = config || {};
        if (config.getTargetXY) {
            this.getTargetXY = config.getTargetXY;
        }

        MyToolTip.superclass.constructor.call(this, config);
    }
});
0 голосов
/ 23 октября 2016

Обратите внимание, что настройка targetXY может оказаться бесполезной, поскольку Ext JS может переопределить эту настройку (в зависимости от размера представления).Переопределение метода "showAt" может предотвратить это:

showAt:function() {     
    var xy = [this.getTargetXY()[0],this.getTargetXY()[1]-this.height]
    MyTooltip.superclass.showAt.call(this, xy);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...