2015-05-29 129 views
5

我目前正在使用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("/") 
    }) 
    .... 
+0

你有三编辑做一个函数$ state.go? – carton

+0

还没有 - 会尝试做到这一点! – kandersen

+0

我更新了plunker,因此$ state.go在'menu 1'的函数中。在设备上进行测试时,只有在点击菜单后,在滑动手指或滑动后才会出现。所以场景是这样的,我点击菜单1 - 没有任何反应 - 向上或向下滑动,然后出现视图。我在手机上使用Ionic View – kandersen

回答

0

对于state.go工作,你必须注入$状态依赖于你的控制器

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'); 
    } 

}]); 

和你必须注册您想要转到$ state的状态提供商

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

为了达到这种状态,在这种情况下,您必须从父母状态转到“菜单”。你不能将状态从'父'更改为'menu.kategorier',但你可以从'父'变成'parent.child'

+0

测试了它,'menu.kategorier'是一个复制粘贴错误。这是我在设备上测试时使用的。为了让我更加简单,我使用了parent.child。所以在测试时我使用了正确的$ stateProvider。 – kandersen

+0

忘了补充一点,纠正控制器中的$ state依赖关系似乎无法解决问题,在单击菜单以使视图出现后,必须轻扫。 – kandersen

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" 
     } 
    } 
    }) 
相关问题