TypeError:无法读取属性' getPictures'未定义的

时间:2016-02-02 06:42:56

标签: android cordova ionic-framework

它是一个带有$ cordovaImagePicker和$ cordovaCamera函数的离子应用程序,在同一个控制器中,并且都是从同一个reservation.html调用的 这是控制器定义:

.controller('AppCtrl', ['$scope', '$timeout', '$ionicModal', '$localStorage', '$cordovaCamera', '$ionicPlatform', '$cordovaImagePicker', function($scope, $timeout, $ionicModal, $localStorage, $cordovaCamera, $ionicPlatform, $cordovaImagePicker){

我使用ionic plugin add cordova-plugin-imagepicker和$ cordovaCamera使用ionic plugin add cordova-plugin-camera安装了$ cordovaImagePicker

这是控制器代码:

$ionicPlatform.ready(function() {
            var options1 = {
                quality: 50,
                destinationType: Camera.DestinationType.DATA_URL,
                sourceType: Camera.PictureSourceType.CAMERA,
                allowEdit: true,
                encodingType: Camera.EncodingType.JPEG,
                targetWidth: 100,
                targetHeight: 100,
                popoverOptions: CameraPopoverOptions,
                saveToPhotoAlbum: false
            };

            $scope.takePicture = function() {
                $cordovaCamera.getPicture(options1).then(function(imageData) {
                    $scope.registration.imgSrc = "data:image/jpeg;base64," + imageData;
                }, function(err) {
                    console.log(err);
                });

                $scope.registerform.show();
            };

            var options2 = {
                maximumImagesCount: 1,
                width: 800,
                height: 800,
                quality: 80
            };
            $scope.getPicture = function() {
                $cordovaImagePicker.getPictures(options2).then(function (results) {
                    for (var i = 0; i < results.length; i++) {
                        console.log('Image URI: ' + results[i]);
                        $scope.registration.imgSrc = results[i];
                    }
                }, function(error) {
                    // error getting photos
                    console.log(error);
                });
            };
        });
    }])

我在Android 5手机上运行应用程序。 takePicture功能完美运行。 getPicture函数不起作用。

devTools控制台显示:

TypeError: Cannot read property 'getPictures' of undefined
    at Object.getPictures (file:///android_asset/www/lib/ngCordova/dist/ng-cordova.js:4420:28)
    at Scope.$scope.getPicture (file:///android_asset/www/js/controllers.js:132:37)
    at fn (eval at <anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:26457:15), <anonymous>:4:221)
    at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:62386:9
    at Scope.$eval (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:29158:28)
    at Scope.$apply (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:29257:23)
    at HTMLButtonElement.<anonymous> (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:62385:13)
    at HTMLButtonElement.eventHandler (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:16583:21)
    at triggerMouseEvent (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2948:7)
    at tapClick (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2937:3) 

错误似乎是说getPictures属于Scope。$ scope.getPicture的范围,但并不是代码的组织方式。 我尝试卸载并重新安装$ cordovaImagePicker但没有更改。

1 个答案:

答案 0 :(得分:3)

经过几个小时的搜索,我找到了这个链接

https://github.com/ratkop/-cordova-imagePickerEx/issues/8

并重新安装imagePicker:

离子插件添加https://github.com/b-alidra/-cordova-imagePickerEx.git - 保存

现在可以正常运行。