panel mit drag und drop funktioniert nicht in extjs 4.1
Dieser code arbeitet in Extjs 4.0.2 ein
aber wenn umgewandelt 4.1 es funktioniert nicht mehr und gibt eine Fehlermeldung
Uncaught TypeError: Cannot call method 'query' of undefined
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
});
});
- Ich habe versucht, folgenden code, der funktioniert gut mit Komponente, aber nicht mit Panel 🙁 und wirft den Fehler : "Uncaught TypeError: Object [object object] has no method 'ensureAttachedToBody'
Ext.onReady(function() { new Ext.Component({ constrain: true, title:'Test', floating: true, style: { backgroundColor: '#fff', border: '1px solid black' }, html: '<h1 style="cursor:move">The title</h1><p>The content</p>', draggable: { delegate:this.body } }).show(); });
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend gibt es einen bug in dieser version von Ext. Es wird nicht funktionieren, selbst wenn Sie versuchen, Standard-D ' N ' WÜRDE für panel wie dieses:
Ich menage patch-code zu arbeiten, wie Sie es wollen, sollte dieser code funktionieren:
Als eine Randnotiz, ich sollte wohl Ratschläge, die Sie nicht tun dies sowieso, denn Sie definieren Ihre eigenen DD für die Systemsteuerung, die Sie verwenden können, und sogar besser Extern bereits definiert, so können Sie einfach überschreiben, Extern panel für Standard -Ext.util.ComponentDragger, oder im code ich rate Ihnen, dies zu tun:
Code für eine
initDraggable
Funktion in der Systemsteuerung überschreiben stammt aus der aktuellen stabilen version von Ext.Fenster.Fenster.initDraggable Methode.War ich in der Lage, um es arbeiten in 4.1: müssen Sie Anführungszeichen um die id des renderTo element, wie:
Ohne Anführungszeichen, er war auf der Suche für eine Undefinierte variable namens divtag.
Einmal rannte ich, dass ich mir keine Fehler, und dann habe ich nur
panel.show()
zu machen.Ext.onReady(function() { var panel = new Ext.Panel({ renderTo : 'divtag', draggable: { insertProxy: false, onDrag: function(e) { console.log(this); var el = this.proxy.getEl(); this.x = el.getX(); this.y = el.getY(); }, endDrag: function(e) { panel.setPosition(this.x,this.y); } }, title: 'Panel', width: 200, height:100, x: 20, y: 20 }); });
Nur ein Vorschlag: eine Window-Komponente ist ein spezielles Panel, das eine schwimmende mixin - mag alles, was Sie brauchen.
<html> <script type="text/javascript"> 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); } }, title: 'Panel', width: 200, height:100, x: 20, y: 20 }); //panel.show(); }); </script> <body> <div id='divtag'> </div></body></html>