2015-06-03 9 views
7

Se creo un progetto semplice:Come scegliere più immagini dal dispositivo?

ionic start MyApp 

e aggiungere il ImagePicker plugin:

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

E semplicemente copiare this example www folder nel progetto e fare:

ionic platform add android 
ionic build android 
ionic run android 

tutto funziona bene . Posso scegliere più immagini come desiderato senza ottenere errori.

Fin qui tutto bene. Ora ho provato ad includerlo nel mio progetto, così ho aggiunto il plugin ImagePicker. Ora, questa è la mia lista plugin:

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" 

ho creato un nuovo modulo:

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); 
      } 
     ); 
    }; 
}); 

Come si può vedere che è esattamente lo stesso controllore che ho copiato dal here, che ha lavorato al progetto semplice test.

Per qualsiasi motivo sospetto, questo NON funziona. Ricevo sempre l'errore:

TypeError: Cannot read property 'getPictures' of undefined 

Quindi qual è il punto? Sto usando EXACT lo stesso codice in entrambi i progetti. In uno tutto funziona e nell'altro niente funziona. Ho provato tutti gli esempi descritti here ma è sempre lo stesso.

+0

Hai dato l'accesso all'app alla fotocamera in manifest? – QueryLars

+1

Dalla versione 3.0 non è mai necessario modificarlo manualmente. tutto viene generato automaticamente – Mulgard

+0

Hai aggiunto il plugin 'cordova-imagePicker'? Se sì, rimuovilo e reinstallalo di nuovo. Ho appena controllato la mia app di test e il plugin funziona correttamente su iOS, in grado di raccogliere 5 immagini. Controllo su Android ... – Tamal

risposta

5

Ho controllato il tuo progetto e il tuo index.html manca cordova.js. Quindi nessuno dei tuoi plugin viene caricato o inizializzato. Basta aggiungere la riga sottostante nel tuo index.html qui sotto dove carichi ng-cordova.js.

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

wow ... era il più ovvio e non l'ho visto dopo 3 giorni. Grazie mille. – Mulgard

0

Nell'esempio si sta iniettando $cordovaCamera, tuttavia l'iconico utilizza $cordovaImagePicker. Inoltre, nel tuo esempio stai usando l'oggetto imagePicker dall'oggetto window. Io non sono l'oggetto window quello che vuoi.

Provare a inserire la dipendenza corretta $cordovaImagePicker e utilizzare invece il metodo $cordovaImagePicker.getPictures.

+0

@Mulgard: ThiagoPXP ha ragione. Prova a usare ngCordova e inserisci '$ cordovaImagePicker', quindi usa' $ cordovaImagePicker'. Riferimento [qui] (http://ngcordova.com/docs/plugins/imagePicker/). – LeftyX

Problemi correlati