2017-08-16 11 views
1

カメラプレビュープラグインの古いバージョンを持っていた古いアプリを更新しようとしましたが、画像のURLを返す方法はまだsetOnPictureTakenHandlerでした。CameraPreview takePicture()は何も返しません。

プラグインの新しいバージョンでは、takePicture()メソッドを使用して、onSuccessと呼ばれる関数を定義できます。この関数は、取得した画像のURLを返すように定義しました。しかし、私はonSuccess機能の外にそのURLを取得することはできません!

私はちょうどtypescriptに移動しているので、変数を管理する間違いがあります。私はcameraPreviewのプロバイダを使用しており、プラグインのメソッドtakePicture()のエンベロープを作成しました。そのエンベロープは、私がプロバイダを注入したコントローラへのURLを返します。ここで

は、プロバイダのエンベロープコードです:ここで

url:string; 
takePictures2() :string {  
    this.cameraPreview.takePicture(function(imgData){ 
     this.url = "data:image/jpeg;base64" + imgData; 
    }).then();  
    return this.url; 
}; 

は、コントローラのコードです:

takePictures() { 
    let url : string = this.cameraPreview.takePictures2(); 
    console.log(url); 
} 

答えて

0

私は以下のコードをテストしていませんが、私は希望:

1) PromisifytakePicture2。これは、プラグインのtakePicture方法をラップして行われたときに、URLを解決します

takePictures2(): Promise<string> { 
    return new Promise((resolve, reject) => { 
     this.cameraPreview.takePicture(function(imgData) { 
      resolve("data:image/jpeg;base64" + imgData); 
     }); 
    }; 
}; 

2)takePictures2を解決するためtakePictures待機します

takePictures() { 
    let url : string; 
    this.cameraPreview.takePictures2().then(url => { 
     this.url = url; 
     console.log(url); 
    ); 
}; 
+1

はどうもありがとうございました、それがどのような私のためだけで正常に動作します必要! – pol52

関連する問題