我一直在寻找最近近2天的解决方案。 我试图使用ngCordova Camera插件。
我使用了带有AngularJS的离子 - 自然框架。
我做的是:
bower install --save ngCordova.
我ngCordova
添加了app.module
。
安装了cordova相机插件:
cordova plugin add org.apache.cordova.camera.
我的控制器:
.controller('profileCtrl', function($scope, myService, $cordovaCamera)
{
$scope.takePicture = function() {
var options = {
quality : 75,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 100,
targetHeight: 100,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false
};
$cordovaCamera.getPicture(options).then(function(imageData) {
// Success! Image data is here
}, function(err) {
// An error occured. Show a message to the user
});
}
myService.getFoo().then(function(data) {
//this will execute when the
//AJAX call completes.
$scope.items = data;
});
})
我收到此错误:ReferenceError:Camera is not defined
答案 0 :(得分:13)
如果您通过浏览器为您的应用提供服务,无论您使用cordova
关于设备使用的任何内容,都无法正常工作。但是,如果您在模拟器或设备本身中提供应用程序后仍遇到问题。请尝试以下步骤。
首先,请检查cordova插件列表:
转到项目目录类型:cordova plugin lists
查看cordova-plugin-media-capture
,cordova-plugin-camera
(如果这些不在列表中,则只是错过了插件)。
运行命令
cordova plugin add cordova-plugin-media-capture
和cordova plugin add cordova-plugin-camera
如果插件在那里且您仍然没有定义相机问题
cordova plugin rm cordova-plugin-camera
cordova plugin rm cordova-plugin-media-capture
ionic platform rm android
ionic platform add android
cordova plugin add cordova-plugin-camera
cordova plugin add cordova-plugin-media-capture
以下内容必须出现在index.html
中 <script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
答案 1 :(得分:2)
您应确保在ng-cordova.js
文件之前包含ngCordova/dist/
文件(来自cordova.js
文件夹)。
答案 2 :(得分:0)
确保在控制器声明中也包含ngCordova。 becoz我已经单独保存了我的控制器和app.js文件,并没有在angular.module('xx.controllers',['ionic','ngCordova'])中包含ngCordova。一旦我做到了,我的问题就解决了,我可以在genymotion中运行应用程序
答案 3 :(得分:0)
通过分析Ionic Camera example project来解决这个问题。您已正确完成所有设置,但仍需将其注入控制器,如下所示:
.controller('MyCtrl', function($scope, Camera) {
请注意Camera
之前没有美元符号。这应该更明确地记录下来。
此外,如果您还没有它,请添加此工厂:
.factory('Camera', ['$q', function($q) {
return {
getPicture: function(options) {
var q = $q.defer();
navigator.camera.getPicture(function(result) {
// Do any magic you need
q.resolve(result);
}, function(err) {
q.reject(err);
}, options);
return q.promise;
}
}
}])
答案 4 :(得分:0)
只需尝试离子运行浏览器,而不是离子服务