Uncaught TypeError: Cannot read property "hasOwnProperty" undefined
Ich bin mit fabric.js zeichnen Sie text auf einer Leinwand. Ich habe eine Funktion zum erstellen einer text-label. Ich möchte Etiketten eine Funktion auszuführen, wenn Sie ausgewählt wurden. Die syntax für diese ist label.on('selected', functionToCall());
Dies funktioniert gut, wenn ich die Funktion eine anonyme innere Funktion, aber wenn ich brechen Sie aus als eine separate Funktion, erhalte ich eine " Uncaught TypeError: Cannot read property 'hasOwnProperty' of undefined
. Was mache ich falsch?
Unten ist der code, der bei mir nicht funktioniert. Hier ist die broken code auf jsfiddle, und eine version, die mit anonyme Funktion, die funktioniert.
"use strict";
var canvas = new fabric.Canvas('c', {selection: false}),
position = 50;
function onLabelSelection(theLabel) {
if (theLabel.hasOwnProperty('edge')) {
selectedEdge = theLabel.edge;
} else {
selectedEdge = null;
}
}
function createLabel() {
var label;
label = new fabric.Text('Hello World', {
left: position,
top: position
});
position += 50;
label.edge = null;
label.on('selected', onLabelSelection(this));
return label;
}
canvas.on('mouse:up', function() {
var newLabel = createLabel();
canvas.add(newLabel);
});
InformationsquelleAutor WhiteHotLoveTiger | 2014-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Die syntax für Ereignis-Handlern ist die pass die handler-Funktion, nicht zu nennen es:
Möchten Sie vielleicht versuchen
label.on('selected', onLabelSelection.bind(this))
oder - seitthis
innencreateLablel
ist offenbarundefined
- nurlabel.on('selected', onLabelSelection)
.Du hast Glück, dass Sie den strikten Modus 🙂 Ansonsten
this
dass Sie bestanden haben gewesen wäre, habe diewindow
, und Sie würde nicht eine Fehlermeldung erhalten, aber nur merkwürdig Verhalten...Strict-Modus ist mein bester Freund!
InformationsquelleAutor Bergi