2011-04-28 88 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); 
}