javascript - 无法读取类中未定义的属性
问题描述
我是 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);
}
}
解决方案
查看文档,似乎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))
推荐阅读
- django - 在单元测试中添加不记名令牌 Django - ValueError: int() 的无效文字,基数为 10
- javascript - 在从 React Icons 导入的 Icons 上使用 useRef
- python - 如何从单个命令中获取多个值?
- puppeteer - 禁用 Chrome “恢复页面?Chrome 未正确关闭”和其他浏览器消息
- postgresql - TypeORM PostgreSQL 无法连接
- python - ModuleNotFoundError:没有名为“src.testproject”的模块
- c# - 将图片框的图像从用户控件更改为带有图像链接的表单
- c# - JsonConvert 反序列化 Avro 文件得到“解析值时遇到意外字符:O. Path '', line 0, position 0。” 错误
- jestjs - 使用 NEXT/IMAGE 开玩笑时出错:`next/image` 上的 src 属性无效,主机名“res.cloudinary.com”未在`next.config.js` 中的图像下配置
- mysql - 存储过程返回空值