Ionic $state.go не работает на устройстве

В настоящее время я работаю над приложением, которое использует Ionic. Моя проблема в том, что $ state.go работает только в браузере, но не на телефоне. Кажется, это общая проблема, но после прочтения множества ответов на одни и те же вопросы я все еще не могу понять, как это исправить.

Общее исправление заключается в том, чтобы убедиться, что вы используете относительные URL-адреса, как описано здесь: Использование Angular UI-Router с Phonegap, но я до сих пор не могу заставить его работать. Что мне не хватает?

Ссылка на плункер: http://plnkr.co/edit/qFJ1Ld6bhKvKMkSmYQC8?p=preview

Структура App.js:

    ....
    $stateProvider
      .state('parent', {
      url: "/",
      templateUrl: "parent.html"
    })
    .state('parent.child', {
      url: "child",
      templateUrl: "child.html"
    })
    $urlRouterProvider.otherwise("/")
    })
    ....

2 ответа

Для того чтобы state.go работал, вы должны ввести зависимость $state в ваш контроллер

app.controller('ParentCtrl', ['$scope', '$state', function($scope, $state) {
  $scope.$state = $state
}]);

app.controller('MenuCtrl', ['$scope', '$state', function($scope, $state){

    $scope.goTo = function(){
        $state.go('menu.kategorier');
    }

}]);

и вы должны зарегистрировать состояние, которое вы хотите перейти в $stateProvider

$stateProvider
.state('menu.kategorier', {...})

и чтобы добраться до этого состояния, вы должны выйти из родительского состояния, например, "меню". вы не можете изменить состояние с "parent" на "menu.kategorier", но вы можете перейти к "parent.child" из "parent"

Я решил эту проблему, изменив настройки для вложенных представлений на основе этого примера: http://codepen.io/mhartington/pen/Bicmo

Вот мой плункер, для тех, кому интересно:

Плункер: http://plnkr.co/edit/2m5bljMntpq4P2ccLrPD?p=preview

структура app.js:

    $stateProvider
      .state('eventmenu', {
      url: "/event",
      abstract: true,
      template: "<ion-nav-view name='menuContent'></ion-nav-view>"
      })

      .state('eventmenu.home', {
      url: "/home",
      views: {
        'menuContent' :{
          templateUrl: "home.html"
        }
      }
     })

     .state('eventmenu.home.home1', {
     url: "/home1",
     views: {
       'inception' :{
         templateUrl: "home1.html"
       }
     }
    })
Другие вопросы по тегам