我对离子很新,并试图实现相机功能。我在routes.js中设置了如下状态
.config(function($stateProvider, $urlRouterProvider) {
// Ionic uses AngularUI Router which uses the concept of states
// Learn more here: https://github.com/angular-ui/ui-router
// Set up the various states which the app can be in.
// Each state's controller can be found in controllers.js
$stateProvider
.state('capture', {
url: '/',
templateUrl: 'templates/capture.html',
controller: 'captureCtrl'
})
.state('selectColor', {
url: '/selectColor',
templateUrl: 'templates/selectColor.html',
controller: 'selectColorCtrl'
})
$urlRouterProvider.otherwise('/')
})
在capture.html中,我点击了使用以下方法打开相机的图像
$scope.capturePhoto = function() {
// Take picture using device camera and retrieve image as base64-encoded string
navigator.camera.getPicture($scope.onPhotoDataSuccess, $scope.onFail, {
quality: 30,
targetWidth: 600,
targetHeight: 600,
destinationType: navigator.camera.PictureSourceType.FILE_URI,
saveToPhotoAlbum: true
});
}
$scope.onPhotoDataSuccess = function(imageURI) {
console.log(imageURI);
$location.path('/selectColor');
}
$scope.onFail = function(message) {
//alert('Failed because: ' + message);
}
关于照片成功,控制是来到$ scope.onPhotoDataSuccess方法,我试图使用$ location.path(' selectColor')移动到/ selectColor但是它没有渲染selectColor.html页面通常我必须使用$ scope。$ apply()才能显示它。
我有角度和AFAIK的经验,如果你已经在角度内,那么你不需要调用$ scope。$ apply()
在我的情况下出了什么问题,是否有不同的方式在离子而不是$ location.path()中路由到另一个页面?
谢谢, Prateek
答案 0 :(得分:2)
这一切都取决于调用$ scope.onPhotoDataSuccess的位置,当你考虑是否在角度"内部#34;。鉴于它可能是从navigator.camera调用的,它不会出现在角度功能(ng-click,ng-submit等)中,你必须继续致电$scope.$apply()
以使其正常运作。没有什么是错的,这是它应该如何运作的。