ionic: $ location.path работает, только если я использую $ scope. $ apply ()

0

Я очень новичок в ионной и пытается реализовать функциональность камеры. У меня есть настройки, как указано ниже в 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

  • 2
    Почему вы не используете $state.go ?
  • 0
    Я больше знаком с угловой. Angular-UI также является новым для меня. Позвольте мне попробовать.
Теги:
ionic-framework
angular-ui-router
angular-ui

1 ответ

2

Все зависит от того, откуда вызывается $ scope.onPhotoDataSuccess, когда вы рассматриваете, являетесь ли вы "внутренним угловым". Учитывая, что он, вероятно, вызывается из navigator.camera, который не будет находиться где-то в угловой функциональности (ng-click, ng-submit и т.д.), Вам придется продолжить вызов $scope.$apply() чтобы заставить его функционировать правильно. Ничего плохого, как он должен работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню