我確定這是我錯過的小事,我會第一個告訴你我不是Angular或ES6專家。我有以下代碼集:無法在Angular 2內部回調中設置類級別變量
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);
}
正如你可以在上面看到,當我第一次that.data回調裏面,它打印到控制檯的罰款。然後,一旦我到達Cordova調用之外的console.log,它就會失去參考。我究竟做錯了什麼?
承諾在哪裏?看起來你正在使用回調。 –
這整個片段cordova.plugins.barcodeScanner.scan是直接從他們的例子。這是插件API。我寫的唯一的東西是控制檯日誌和變量。 –
好的,但在任何地方都沒有承諾,即使將它作出承諾以使編寫代碼變得更容易也不失爲一個好主意! –