IONIC APP- [$injector:unpr] 未知供应商:
IONIC APP- [$injector:unpr] Unknown provider:
我收到这个错误,一直在 google 上寻找它,但仍然无法解决这个问题。
ionic.bundle.js:26799 Error: [$injector:unpr] Unknown provider: $cordovaCameraProvider <- $cordovaCamera <- CameraCtrl
app.js 代码如下
angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'templates/tabs.html'
})
.state ('camera',{
url:'/camera',
controller:'CameraCtrl'
})
.state('tab.account', {
url: '/done',
views: {
'tab-d': {
templateUrl: 'templates/d.html',
controller: 'DCtrl'
}
}
});
$urlRouterProvider.otherwise('/abc');
});
Controller.js 代码如下
.controller('CameraCtrl', function($scope, $cordovaCamera) {
document.addEventListener("deviceready", function () {
var options = {
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,
correctOrientation:true
};
$cordovaCamera.getPicture(options).then(function(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}, function(err) {
// error
});
}, false);
})
点击这个图标应该会打开相机来捕捉图像
<a href="#/camera"><i class="icon ion-camera"></i></a>
在 app.js 中,您应该更改此行
angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])
至此
angular.module('starter', ['ionic','ngCordova','starter.controllers', 'starter.services'])
ngCordova docs中有更多相关信息:
作为 Angular 依赖项注入
angular.module('myApp', ['ngCordova'])
我通过以下步骤解决了这个问题:
第 1 步:使用 bower 安装 ngCordova
$ bower install ngCordova --save
第 2 步: 在 index.html 文件中的 [=36] 之前包含 ng-cordova.js 或 ng-cordova.min.js =] 和你的 AngularJS / Ionic 文件之后(因为 ngCordova 依赖于 AngularJS)。
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
第 3 步: 然后,将 ngCordova 作为依赖项包含在您的 angular 模块中:
angular.module('myApp', ['ngCordova'])
我收到这个错误,一直在 google 上寻找它,但仍然无法解决这个问题。
ionic.bundle.js:26799 Error: [$injector:unpr] Unknown provider: $cordovaCameraProvider <- $cordovaCamera <- CameraCtrl
app.js 代码如下
angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'templates/tabs.html'
})
.state ('camera',{
url:'/camera',
controller:'CameraCtrl'
})
.state('tab.account', {
url: '/done',
views: {
'tab-d': {
templateUrl: 'templates/d.html',
controller: 'DCtrl'
}
}
});
$urlRouterProvider.otherwise('/abc');
});
Controller.js 代码如下
.controller('CameraCtrl', function($scope, $cordovaCamera) {
document.addEventListener("deviceready", function () {
var options = {
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,
correctOrientation:true
};
$cordovaCamera.getPicture(options).then(function(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}, function(err) {
// error
});
}, false);
})
点击这个图标应该会打开相机来捕捉图像
<a href="#/camera"><i class="icon ion-camera"></i></a>
在 app.js 中,您应该更改此行
angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])
至此
angular.module('starter', ['ionic','ngCordova','starter.controllers', 'starter.services'])
ngCordova docs中有更多相关信息:
作为 Angular 依赖项注入
angular.module('myApp', ['ngCordova'])
我通过以下步骤解决了这个问题:
第 1 步:使用 bower 安装 ngCordova
$ bower install ngCordova --save
第 2 步: 在 index.html 文件中的 [=36] 之前包含 ng-cordova.js 或 ng-cordova.min.js =] 和你的 AngularJS / Ionic 文件之后(因为 ngCordova 依赖于 AngularJS)。
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
第 3 步: 然后,将 ngCordova 作为依赖项包含在您的 angular 模块中:
angular.module('myApp', ['ngCordova'])