2011-04-28 75 views
1

我想更改工具提示的位置以在按鈕上顯示它。我在ExtJs的論壇中提到了下面的方法。它不起作用,我不能覆蓋getTargetXY方法,工具提示始終顯示在同一位置。你有任何解決方案?如何更改工具提示在ExtJs 3.3中的位置

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]; 
     } 
    }) 
}); 

回答

4

只能通過文檔中指定的Ext元素傳遞配置選項; getTargetXY不是這些選項之一。

如果你想重寫方法,你有兩個選擇:

  • 覆蓋所有分機工具提示使用新功能
  • 擴展現有的工具提示類,以支持重寫該方法

我不會推薦重寫此方法,因爲這可能會產生其他後果。然而,我會解釋如何做到這一點。

要覆蓋工具提示:

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

注意,設定 'targetXY' 可以證明無益,因爲Ext JS的可以重寫此設置(取決於視圖尺寸)。 重寫「showAt」方法可以防止這種情況:

showAt:function() {  
    var xy = [this.getTargetXY()[0],this.getTargetXY()[1]-this.height] 
    MyTooltip.superclass.showAt.call(this, xy); 
}