Ext.menu.Menu():如何获取菜单的宽度(需要显示偏移量)

时间:2011-10-18 09:38:15

标签: javascript extjs extjs3

首先我使用的是ext-3.3.1

我使用Ext.menu.Menu()构建了一个上下文菜单,并使用以下项目填充它:

menu.addMenuItem({
    text : TaskGeneralBaseds[i].getAttribute("Name"),
    templateTypeID : templateTypeID,
    taskType : taskType,
    scope : this,
    listeners : {
           click : {
             fn : this.extAddTaskClicked
       }
    },      
    icon:g ? g : null
    });

然后我显示这样的菜单

var left = window.event.clientX;
var top = window.event.clientY;

menu.showAt([left,top]);

现在问题是我想用偏移显示它,好像它是从右到左显示而不是从左到右显示(我已经处理了所有其他RTL问题) 所以,如果我有菜单的宽度,我可以做这样的事情:

var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;

var top = window.event.clientY;

menu.showAt([left,top]);

有什么想法吗?

提前致谢!

丹尼尔。

1 个答案:

答案 0 :(得分:1)

显示菜单(因此它将被渲染),获取其宽度,然后重新定位:

menu.showAt(0,0);    
var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;
var top = window.event.clientY;
menu.setPosition(left,top);

或者使用固定的配置宽度。