2015-06-03 48 views
7

如果我創建一個簡單的項目:如何從設備中選擇多個圖像?

ionic start MyApp 

並添加ImagePicker插件:

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

而簡單地複製this example www folder到項目,並做到:

ionic platform add android 
ionic build android 
ionic run android 

一切正常。我可以按照預期選擇多個圖像而不會出現任何錯誤。

到目前爲止這麼好。現在我試圖將其包含到我的項目中,所以我添加了ImagePicker插件。現在,這是我的插件列表:

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" 

我創建了一個新的模塊:

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

正如你可以看到它正是我從here這在簡單的測試項目的工作拷貝相同的控制器。

對於任何可疑的原因,這是行不通的。我總是得到錯誤:

TypeError: Cannot read property 'getPictures' of undefined 

那麼有什麼意義呢?我在兩個項目中都使用相同的代碼。在一件事情正在工作,另一件事情沒有任何工作。我試過所有的例子描述here但它總是相同的。

+0

您是否已嚮應用程序提供對清單中相機的訪問權限? – QueryLars

+1

從版本3.0開始,您永遠不需要手動進行編輯。它全部自動生成 – Mulgard

+0

您是否添加了'cordova-imagePicker'插件?如果是,請刪除並重新安裝。我剛剛檢查了我的測試應用程序,並且插件在iOS上正常工作,可以拾取任何5張圖像。檢查Android ... – Tamal

回答

5

我檢查了你的項目,你的index.html丟失了cordova.js。所以你的插件沒有被加載或初始化。 只需在下面加入ng-cordova.js的index.html的下面一行即可。

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

哇...這是最明顯的,我沒有看到它3天后。非常感謝你。 – Mulgard

0

就你的例子你注射$cordovaCamera,但標誌性的使用$cordovaImagePicker。另外,在您的示例中,您使用window對象中的對象imagePicker。我不是window對象就是你想要的。

嘗試注入正確的依賴關係$cordovaImagePicker並使用方法$cordovaImagePicker.getPictures代替。

+0

@Mulgard:ThiagoPXP是正確的。嘗試使用ngCordova並注入'$ cordovaImagePicker',然後使用'$ cordovaImagePicker'。參考[這裏](http://ngcordova.com/docs/plugins/imagePicker/)。 – LeftyX

相關問題