Ionic $ state.go不能在设备上工作
问题描述:
我目前正在使用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("/")
})
....
答
对于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'
答
我通过更改嵌套视图的设置来解决它,基于此示例: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"
}
}
})
你有三编辑做一个函数$ state.go? – carton
还没有 - 会尝试做到这一点! – kandersen
我更新了plunker,因此$ state.go在'menu 1'的函数中。在设备上进行测试时,只有在点击菜单后,在滑动手指或滑动后才会出现。所以场景是这样的,我点击菜单1 - 没有任何反应 - 向上或向下滑动,然后出现视图。我在手机上使用Ionic View – kandersen