2017-08-16 91 views
1

我一直在嘗試更新一個老版本的相機預覽插件,它仍然有setOnPictureTakenHandler方法允許我返回圖片的url。CameraPreview takePicture()什麼也沒有返回

該插件的較新版本使用takePicture()方法,我可以在其中定義一個函數,該函數將被調用onSuccess,並且我定義該函數以返回拍攝圖像的URL。但我無法獲得onSuccess功能之外的URL!

我剛剛轉移到打字稿,所以我想這是某種管理變數的錯誤。我正在使用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方法和解決完成後的網址:

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

2)使takePictures等待takePictures2解決:

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

非常感謝你,它工作得很好了我需要! – pol52