首页 > 解决方案 > 无法读取类中未定义的属性

问题描述

我是 javascript 新手,所以谁能帮我弄清楚为什么这段代码不起作用?

我有一堂课,它调用了科尔多瓦条码扫描功能。我有一个可行的示例,但是我希望能够分离出函数(结果)和函数(错误)并使用 onSuccess(result)和 onFailure(error)。

我不知道为什么会发生这种情况,所以如果有人可以提供帮助,那就太好了。

编辑:所以我更新了基于 Stradosphere 的代码,但我仍然得到结果不是定义的错误。

完整的错误信息:

未捕获的 ReferenceError:结果未在 HTMLButtonElement.myFunction (main.js:18) 的barcodeScanner.scanBarcode (barcodeScanner.js:10) 中定义

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);
    }
}

标签: javascriptcordovaphonegap-plugins

解决方案


查看文档,似乎cordova.plugins.barcodeScanner.scan()希望您将函数传递给它。但是你这样称呼它:

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

这是传递函数的结果.onSuccess(result),但result没有定义,所以你得到一个错误。此外,您想this成为类实例,但通过定义methis类外部,me不会像您希望的那样等于类实例。但无论如何你都不需要它。

尝试传递函数:

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

推荐阅读