Ich bin in die Realms von Winkel 2 übergegangen und habe beschlossen, eine Drag-and-Drop-Komponente zu erstellen. Also:Handling-Kontext in ES6-Klassen
Ich habe mehrere Variablen mit zugeordneten Typen definiert wie folgt:
export class UploadComponent {
image: Blob;
reader: FileReader;
ele: Element;
cols: NodeList;
dragSrcEl: Object;
...
}
Und ich habe mehrere Funktionen an ihren entsprechenden Zuhörer - hier sind die beiden Funktionen in Frage:
handleDragStart(e) {
e.target.classList.remove('opaque');
(() => { this.dragSrcEl = e; })();
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text/html', this['innerHTML']);
}
und
handleDrop(e) {
if(e.stopPropagation)
e.stopPropagation();
console.log('this -> '+this);
console.log('dragSrcEl -> '+(() => { this.dragSrcEl })());
}
so, wenn der Benutzer beginnt, das Element zu ziehen Wir setzen die this.dragSrcEl
Klassenvariable auf e
, aber wenn ich darauf in der zweiten Funktion zugreife, bekomme ich auch undefined
, wenn ich die wunderbare Pfeilfunktion verwende. Warum?
Ist die Verwendung der Pfeilfunktion hier nicht ausreichend, um sicherzustellen, dass ich auf den richtigen Kontext zugreife und auf die richtige Variable zugreife? Ich muss ein grundlegendes Missverständnis von OO Javascript haben, weil ich denke, dass das funktionieren sollte.
Dank
EDIT 1
Ich habe auch versucht, es ohne die Verwendung des IIFE wie so nennen:
this.dragSrcEl = e;
Ist das Typoskript? Es ist definitiv nicht ES6. – Bergi