6

我目前正在开发一个应用程序,使用 Ionic 构建。我的问题是 $state.go 只能在浏览器中运行,而不能在手机上运行。这似乎是一个常见问题,但是在阅读了很多相同问题的答案之后,我仍然无法弄清楚如何解决它。

一般修复似乎是确保您使用相对 URL,如下所述:Using Angular UI-Router with Phonegap但我仍然无法使其正常工作。我错过了什么?

链接到 plunker: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("/")
    })
    ....
4

2 回答 2

0

为了让 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', {...})

在这种情况下,要进入该状态,您必须从父状态(例如“菜单”)。您不能将状态从“父”更改为“menu.kategorier”,但您可以从“父”转到“父子”

于 2015-05-29T13:37:48.410 回答
0

我通过更改嵌套视图的设置解决了这个问题,基于这个例子:http ://codepen.io/mhartington/pen/Bicmo

这是我的plunker,对于那些感兴趣的人:

Plunker: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"
       }
     }
    })
于 2015-05-30T19:19:15.900 回答