我目前正在开发一款应用,使用Ionic进行构建。我的问题是$ state.go只能在浏览器中工作,但不能在手机上工作。这似乎是一个常见的问题,但在阅读了相同问题的大量答案之后,我仍然无法弄清楚如何修复它。
常规修复似乎是为了确保您使用相对网址,如此处所述: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 :(得分: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'但你可以转到'parent.child'来自' parent'
答案 1 :(得分:0)
我根据以下示例更改了嵌套视图的设置解决了这个问题:http://codepen.io/mhartington/pen/Bicmo
对于那些感兴趣的人来说,这是我的傻瓜:
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"
}
}
})