当前位置:  开发笔记 > 编程语言 > 正文

无法在Angular 2 Inside Callback中设置类级别变量

如何解决《无法在Angular2InsideCallback中设置类级别变量》经验,为你挑选了1个好方法。

我确信这是我失踪的小事,我会第一个告诉你我不是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 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,它就会失去参考.我究竟做错了什么?



1> cartant..:

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

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

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有