gpt4 book ai didi

javascript - 面板拖放在 extjs 4.1 中不起作用

转载 作者:行者123 更新时间:2023-11-29 17:26:14 24 4
gpt4 key购买 nike

此代码适用于 Extjs 4.0.2a但当转换为 4.1它不再有效并给出错误

未捕获的类型错误:无法调用未定义的方法“查询”

Ext.onReady(function() {

var panel = new Ext.Panel({
renderTo: divtag,
draggable: {
insertProxy: false,
onDrag: function(e) {
var el = this.proxy.getEl();
this.x = el.getLeft(true);
this.y = el.getTop(true);
},
endDrag: function(e) {
this.panel.setPosition(this.x, this.y);
}
},
title: 'Panel',
width: 200,
height: 100,
x: 20,
y: 20
});
});

最佳答案

显然这个版本的 Ext 有一个错误。即使您像这样为面板尝试默认的 D'n'D,它也不会工作:

Ext.onReady(function() {
var panel = new Ext.Panel({
renderTo: 'divtag',
draggable: true,
title: 'Panel',
width: 200,
height:100,
x: 20,
y: 20
}); //panel.show(); });
});

我设法修补代码以按照您想要的方式工作,这段代码应该可以工作:

Ext.onReady(function() {
var panel = new Ext.Panel({
renderTo: 'divtag',
draggable: {
insertProxy: false,
onDrag: function(e) {
var el = this.proxy.getEl();
this.x = el.getX();
this.y = el.getY();
},
endDrag: function(e) {
panel.setPosition(this.x,this.y);
},
alignElWithMouse: function() {
panel.dd.superclass.superclass.alignElWithMouse.apply(panel.dd, arguments);
this.proxy.sync();
}
},
title: 'Panel',
width: 200,
height:100,
x: 20,
y: 20
}); //panel.show(); });
});

作为旁注,我可能应该建议你无论如何都不要这样做,因为你可以为你可以使用的面板定义你自己的 DD,更好的是 Ext 已经定义了一个,所以你可以覆盖 Ext 面板来使用默认 Ext.util.ComponentDragger ,或者在代码中,我建议你这样做:

Ext.override(Ext.panel.Panel, {
initDraggable: function() {
var me = this,
ddConfig;

if (!me.header) {
me.updateHeader(true);
}

if (me.header) {
ddConfig = Ext.applyIf({
el: me.el,
delegate: '#' + me.header.id
}, me.draggable);

// Add extra configs if Window is specified to be constrained
if (me.constrain || me.constrainHeader) {
ddConfig.constrain = me.constrain;
ddConfig.constrainDelegate = me.constrainHeader;
ddConfig.constrainTo = me.constrainTo || me.container;
}

me.dd = Ext.create('Ext.util.ComponentDragger', this, ddConfig);
me.relayEvents(me.dd, ['dragstart', 'drag', 'dragend']);
}
}
});
var panel = Ext.create('Ext.panel.Panel', {
id: 'test',
renderTo: 'divtag',
draggable: true,
floating: true,
title: 'Panel',
width: 200,
height:100,
x: 20,
y: 20
});

面板覆盖中的 initDraggable 函数代码取自当前稳定版本的 Ext.window.Window.initDraggable方法。

关于javascript - 面板拖放在 extjs 4.1 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com