2016-06-23 2 views
0

내 이온 프로젝트에서 스크린 샷을 찍어 카메라 롤에 저장하고 싶습니다. 현재 버튼이 스크린 샷을 찍을 수 없습니다. 나는 안드로이드 장치에서 응용 프로그램을 테스트하고 있습니다. https://github.com/gitawego/cordova-screenshot스크린 샷 플러그인을 사용하여 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)와 각도 서비스 사이에 컨트롤러가 필요하다고 생각합니다. 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

나는 어떻게하면 더 많은 정보를 제공 할 수 있는지 잘 모르겠습니다. 무슨 일 이니? 개발자 도구 콘솔에 오류가 있습니까? –