无法阅读课堂中未定义的属性



我是JavaScript的新手,所以有人可以帮助我弄清楚为什么此代码不起作用?

我有一个课程,它称为Cordova条形码扫描功能。我有一个有效的示例,但是我希望能够将功能(结果(和函数(错误(分开,并使用onSuccess(result(和onfailure(错误(。

我不知道为什么会发生这种情况,所以如果有人可以帮助那会很棒。

编辑:因此,IVE基于Stradophere更新了代码,但是IM仍然得到结果并不是定义的错误。

完整错误消息:

未接收参考:在barcodescanner.scanbarcode(barcodescanner.js:10(上未定义结果,htmlbuttonelement.myfunction(main.js:18(

var me = this;
class barcodeScanner {
    constructor() {
        this._barcodeResult = 0;
    }
    scanBarcode() {
        //THIS THROWS result is not defined error 
        cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));
        //THIS WORKS
        cordova.plugins.barcodeScanner.scan(
            function (result) {
                me._barcodeResult = result.text;
                alert("Barcode Scanned:" + me._barcodeResult);        
            },
            function (error) {
                alert("Scanning failed: " + error);
            }
        );
    }
    onSuccess(result) {
        this._barcodeResult = result.text;
        alert("Barcode Scanned:" + this._barcodeResult);
    }
    onFailure(error) {
        alert("Scanning failed: " + error);
    }
}

查看文档,看来cordova.plugins.barcodeScanner.scan()希望您将功能传递到其中。但是您是这样称呼的:

 cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));

这是通过函数.onSuccess(result)结果,但是未定义result,因此您会遇到错误。此外,您希望this成为类实例,但是通过将me定义为类thisme不会像您想要的那样等于类实例。但是您无论如何都不需要它。

尝试传递功能:

cordova.plugins.barcodeScanner.scan((result) => this.onSuccess(result),(error)=> this.onFailure(error))

也许是您使用此问题的范围问题。尝试:

var me = this; //(put this at class level)
cordova.plugins.barcodeScanner.scan(me.onSuccess, me.onFailure);

最新更新