2015-06-03 8 views
7

Wenn ich ein einfaches Projekt erstellen:Wie man mehrere Bilder vom Gerät auswählt?

ionic start MyApp 

und fügen Sie die ImagePicker Plugin:

ionic plugin add https://github.com/wymsee/cordova-imagePicker.git -save 

Und einfach kopieren this example www folder in das Projekt und zu tun:

ionic platform add android 
ionic build android 
ionic run android 

Alles ist adaequat . Ich kann mehrere Bilder wie beabsichtigt auswählen, ohne irgendwelche Fehler zu bekommen.

So weit so gut. Jetzt habe ich versucht, das in mein Projekt zu integrieren, also fügte ich das Plugin hinzu. Nun ist dies meine Plugin-Liste:

ionic plugin ls 
com.synconset.imagepicker 1.0.6 "ImagePicker" 
cordova-plugin-camera 1.1.0 "Camera" 
cordova-plugin-device 1.0.0 "Device" 
cordova-plugin-dialogs 1.1.0 "Notification" 
cordova-plugin-splashscreen 2.0.0 "Splashscreen" 
cordova-plugin-statusbar 1.0.0 "StatusBar" 
cordova-plugin-vibration 1.1.0 "Vibration" 
cordova-plugin-whitelist 1.0.0 "Whitelist" 

ich ein neues Modul erstellt:

angular.module('App.ImageSelect', []) 

.config(function ($stateProvider, $urlRouterProvider) { 
    $stateProvider.state('app.imageSelect', { 
     url: "/products/prints/pola/imageSelect", 
     views: { 
      'menuContent': { 
       templateUrl: "modules/products/prints/pola/imageSelect/imageSelect.html", 
       controller: 'ImageSelectController' 
      } 
     } 
    }); 
}) 

.controller('ImageSelectController', function ($scope, $cordovaImagePicker) { 
    $scope.images = []; 

    $scope.selectImages = function() { 
     $cordovaImagePicker.getPictures(
      function (results) { 
       for (var i = 0; i < results.length; i++) { 
        console.log('Image URI: ' + results[i]); 

        $scope.images.push(results[i]); 
       } 

       if (!$scope.$$phase) { 
        $scope.$apply(); 
       } 
      }, 
      function (error) { 
       console.log('Error: ' + error); 
      } 
     ); 
    }; 
}); 

Wie Sie sehen können, ist es genau der gleiche Controller, die ich von here kopiert, die auf dem einfachen Test Projekt gearbeitet.

Für irgendeinen verdächtigen Grund funktioniert das NICHT. Ich bekomme immer den Fehler:

TypeError: Cannot read property 'getPictures' of undefined 

Also was ist der Sinn davon? Ich verwende EXACT den gleichen Code in beiden Projekten. In einem funktioniert alles und in dem anderen funktioniert nichts. Ich habe alle beschriebenen Beispiele here versucht, aber es ist immer das gleiche.

+0

Haben Sie der App Zugriff auf die Kamera in Manifest gegeben? – QueryLars

+1

Seit Version 3.0 müssen Sie das nie manuell bearbeiten. alles wird automatisch erzeugt – Mulgard

+0

Hast du 'cordova-imagePicker' Plugin hinzugefügt? Wenn ja, entfernen Sie es und installieren Sie es erneut. Ich habe gerade meine Test-App überprüft und Plugin funktioniert gut auf iOS, kann alle 5 Bilder abholen. Android einchecken ... – Tamal

Antwort

5

Ich habe Ihr Projekt überprüft und Ihre index.html fehlt cordova.js. So wird keines Ihrer Plugins geladen oder initialisiert. Fügen Sie einfach die folgende Zeile in Ihrer index.html unten hinzu, wo Sie ng-cordova.js laden.

<script src="cordova.js"></script> 
+2

wow ... es war das offensichtlichste und ich habe es nach 3 Tagen nicht gesehen. Vielen Dank. – Mulgard

0

Auf Ihrem Beispiel injizieren Sie $cordovaCamera, aber die ikonischen verwendet $cordovaImagePicker. Auch in Ihrem Beispiel verwenden Sie das Objekt imagePicker aus dem Objekt window. Ich bin nicht das window Objekt ist was du willst.

Versuchen Sie, die richtige Abhängigkeit $cordovaImagePicker zu injizieren und verwenden Sie stattdessen die Methode $cordovaImagePicker.getPictures.

+0

@Mulgard: ThiagoPXP hat Recht. Versuchen Sie es mit ngCordova und injizieren '$ cordovaImagePicker' und verwenden Sie' $ cordovaImagePicker'. Referenz [hier] (http://ngcordova.com/docs/plugins/imagePicker/). – LeftyX