无法在类

时间:2018-04-24 22:14:22

标签: javascript cordova phonegap-plugins

我是javascript的新手所以任何人都可以帮我弄清楚为什么这段代码不起作用?

我有一个类,它称为cordova条形码扫描功能。我有一个有效的例子,但是我希望能够分离出函数(结果)和函数(错误)并使用onSuccess(result)和onFailure(错误)。

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

编辑:所以我更新了基于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);
    }
}

2 个答案:

答案 0 :(得分:1)

查看docs,似乎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))

答案 1 :(得分:0)

对您使用此问题可能存在范围问题。尝试:

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