无法在 Angular 2 内部回调中设置类级别变量



我确定我缺少的是一些小东西,我会第一个告诉你我不是 Angular 或 ES6 专家。我有以下代码集:

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 barcoden" +
                     "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 时,它很好地打印到控制台。然后,一旦我进入控制台.log在 Cordova 呼叫之外,它就会以某种方式失去参考。我做错了什么?

cordova.plugins.barcodeScanner.scan调用是异步的,因此在调用成功回调之前不会定义that.data

如果您查看控制台,您应该注意到"That data is finally"消息记录在"That data first is"消息之前

最新更新