我是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
定义为类this
,me
不会像您想要的那样等于类实例。但是您无论如何都不需要它。
尝试传递功能:
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);