Ich bin sicher, es ist etwas Kleines, dass ich vermisse, und ich werde der Erste sein, der Ihnen sagen, ich bin kein Angular oder ES6 Experte. Ich habe den folgenden Code Set:Kann nicht Klassenvariablen in Angular 2 Inside Callback setzen
getScanner(){
var that = this;
cordova.plugins.barcodeScanner.scan(
function (result) {
console.log("OBJ "+result);
that.data = result;
//THIS IS DEFINED
console.log("That data first is "+that.data);
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
},
function (error) {
alert("Scanning failed: " + error);
}
);
//THIS IS UNDEFINED
console.log("That data is finally "+that.data);
}
Wie man oben sehen kann, wenn ich zum ersten Mal in der Callback-Set that.data, es an die Konsole fein gedruckt. Dann verliert es irgendwie die Referenz, sobald ich zur Konsole.log außerhalb des Cordova-Anrufs komme. Was mache ich falsch?
Wo ist das Versprechen? Anscheinend verwenden Sie Rückrufe. –
Dieser ganze Ausschnitt cordova.plugins.barcodeScanner.scan ist direkt von ihrem Beispiel. Dies ist die Plugin-API. Das einzige, was ich geschrieben habe, waren die Konsolenprotokolle und Variablen. –
Okay, aber es gibt kein Versprechen irgendwo, obwohl es eine gute Idee wäre, es zu promitifizieren, um es einfacher zu machen, den Code zu schreiben! –