2016-06-23 40 views
0

私のイオンプロジェクトがスクリーンショットを撮ってカメラロールに保存したい。 現在、ボタンはスクリーンショットを撮ることができません。私はアンドロイドデバイスでアプリをテストしています。 https://github.com/gitawego/cordova-screenshotscreenshotプラグインを使用してionic/cordovaのボタンでスクリーンショットを撮る

index.htmlを

<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 
    <script src="js/ng-cordova.min.js"></script> 
    <script src="cordova.js"></script> 
    <script src="js/app.js"></script> 
    </head> 
    <body ng-app="starter"> 
    <ion-view> 
     <ion-content> 
     <button class="button" ng-click="$cordovaScreenshot.capture()">screenshot</button> 
     </ion-content> 
    </ion-view> 
    </body> 
</html> 

は私の最初のコメントのフォローアップとして

angular.module('starter', ['ionic','ngCordova']) 
.service('$cordovaScreenshot', ['$q', function($q) { 
    return { 
     capture: function(filename, extension, quality) { 
     filename = filename || 'pic'; 
      extension = extension || 'jpg'; 
      quality = quality || '100'; 

      var defer = $q.defer(); 

      navigator.screenshot.save(function(error, res) { 
       if (error) { 
        console.error(error); 
        defer.reject(error); 
       } else { 
        console.log('screenshot saved in: ', res.filePath); 
        defer.resolve(res.filePath); 
       } 
      }, extension, quality, filename); 

      return defer.promise; 
     } 
    }; 
}]); 
+1

で見つけることができます。残りは大丈夫ですが、ng-clickはサービス上で直接capture()メソッドを実行できません。 –

+0

あなたが言っていることは理にかなっています。私が追加しなければならないコントローラーの内容を詳しく教えてください。 –

答えて

2

をapp.js: 私はこのプラグインを使用しています。私はビュー(HTML)とAngularサービスの間にコントローラが必要だと思います。 HTMLビューはサービスと直接通信できないため、中間コントローラが必要です。線に沿って

何か:

angular.module('starter', ['ionic','ngCordova']) 
.controller('myController', ['$cordovaScreenshot', function($cordovaScreenshot) { 
    $scope.captureScreenshot = function() { 
     $cordovaScreenshot.capture('filename', 'png', 100).then(function(result) { 
      // do something with result 
     }, function(error) { 
      // do something with error 
     }); 
    }; 
}]); 

あなたが見ることができるように、我々は$cordovaScreenshotサービスを注入するために、依存性注入を使用しています。

<ion-content ng-controller="myController"> 
    <button class="button" ng-click="captureScreenshot()">screenshot</button> 
</ion-content> 

お知らせng-controllerng-click方法の変更:

そして、あなたのビューがcaptureScreenshotメソッドをトリガーします。

+0

まだ動作していません。お手伝いできますか? –

+0

私はあなたにどのように多くの情報を提供できるか分かりません。何がうまくいかないのですか?デベロッパーツールコンソールにエラーが表示されますか? –

関連する問題