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,非常感谢任何帮助!
答案 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')
。