在cordova相机插件的成功方法中调用angluar2方法

时间:2017-08-14 12:23:08

标签: javascript android angular cordova android-camera

我已成功在我的angular2项目中集成了cordova插件。 我打电话给" takePicture"成功调用原生相机的方法。

public takePicture() {
    const srcType = navigator.camera.PictureSourceType.CAMERA;
    const options = this.setOptions(srcType);
    navigator.camera.getPicture(this.onSuccess, this.onFail,options);
  }

  public onSuccess(imageData) {
    this.capture('data:image/jpeg;base64,' + imageData); <-- this doesn't work here I guess

  }

  public onFail(message) {
    alert('Failed because: ' + message);
    console.log(message);
  }
.....

问题是当我拍照并调用onSuccess函数时,当我调用this.capture(....)时会出现以下错误:

  

core.es5.js:1084 ERROR TypeError:无法读取属性&#39; capture&#39;的   空

这意味着angular并不知道this.capture(..)的方法。 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在将实例方法作为回调传递时丢失了对象上下文,因此this的计算结果为null

您可以通过将方法调用包装在函数中来轻松修复它:

navigator.camera.getPicture(
    (data) => this.onSuccess(data),
    (message) => this.onFail(message),
    options
);