Я очень новичок в ионной и пытается реализовать функциональность камеры. У меня есть настройки, как указано ниже в 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 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, где я пытаюсь перейти в /selectColor с помощью $ location.path('selectColor'), но он не отображает страницу selectColor.html нормально, и мне нужно использовать $ scope $ apply(), чтобы он появился.
У меня есть опыт углового и AFAIK, если вы уже внутри углового, тогда вам не нужно вызывать $ scope. $ Apply()
В моем случае что-то не так, и есть другой способ перехода на другую страницу в ионной, а не на $ location.path()??
Спасибо, Prateek
Все зависит от того, откуда вызывается $ scope.onPhotoDataSuccess, когда вы рассматриваете, являетесь ли вы "внутренним угловым". Учитывая, что он, вероятно, вызывается из navigator.camera, который не будет находиться где-то в угловой функциональности (ng-click, ng-submit и т.д.), Вам придется продолжить вызов $scope.$apply()
чтобы заставить его функционировать правильно. Ничего плохого, как он должен работать.
$state.go
?