EXTJS上下文菜单显示在错误的位置

时间:2012-03-20 21:34:37

标签: javascript extjs

extjs上下文菜单在错误的地方偶尔出现。屏幕左上方,有时一直是左中间。很多时候它显示得很好,但是它出现在错误的地方足以让它烦人。

这是菜单代码的开头:

grid<?php echo $count; ?>.contextMenu = new Ext.menu.Menu({
id: 'gridCtxMenu<?php echo $count; ?>',
items: [ ...

这是我将showAt附加到菜单按钮“#actions_button;

的地方
var action_button = 'actions_button' + <?php echo $count; ?>;

Ext.fly(action_button).on('click', function() {
    var xy = this.getXY();
    xy[1] += this.getHeight();
    grid<?php echo $count; ?>.contextMenu.showAt(xy);

});

使用extjs 3.2,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

可能需要查看整个代码才能正确分析问题。

一个可能的原因是Ext.fly写入单身人士。也就是说,在运行“click”处理程序时,flyweight对象指向不同的DOM节点,而不是action_button。这意味着this.getXY()会返回废话。

  

http://extjs.cachefly.net/ext-3.2.1/docs/?class=Ext#Ext-fly
  ... dom节点可以被其他代码覆盖。 ...使用此选项将一次性引用发送到不会再被访问的DOM元素,无论是应用程序代码还是Ext的类。

改为使用Ext.get(action_button)Ext.fly(action_button, 'MYNAMESPACE')