Это ионное приложение с функциями $ cordovaImagePicker и $ cordovaCamera в том же контроллере, и оба вызваны из одной и той же reservation.html Это определение контроллера:TypeError: Не удается прочитать свойство «getPictures» неопределенного
.controller('AppCtrl', ['$scope', '$timeout', '$ionicModal', '$localStorage', '$cordovaCamera', '$ionicPlatform', '$cordovaImagePicker', function($scope, $timeout, $ionicModal, $localStorage, $cordovaCamera, $ionicPlatform, $cordovaImagePicker){
Я установил $ cordovaImagePicker с помощью ionic plugin add cordova-plugin-imagepicker
и $ cordovaCamera с помощью ionic plugin add cordova-plugin-camera
Это код контроллера:
$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, но никаких изменений.
Я бы сказал, что '$ cordovaCamera' не определяется к тому времени, когда вы пытаетесь вызвать метод' gefPictures(). Вы проверили, правильно ли работает инъекция? – Phonolog
, когда я нажимаю на первую ошибку, указывает на начало .getPictures() в $ window.imagePicker.getPictures (функция .... $ cordovaCamera работает нормально. – meanstacky