我正在使用Agnularjs和Ionic Framework。我试图实现嵌套状态,如下所示,
我的路线文件看起来像,
angular.module('ionicApp', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('eventmenu', {
url: "/event",
abstract: true,
templateUrl: "event-menu.html"
})
.state('eventmenu.home', {
url: "/home",
views: {
'menuContent' :{
templateUrl: "home.html"
}
}
})
.state('eventmenu.home.home1', {
url: "/home1",
views: {
'menuContent' :{
templateUrl: "home1.html"
}
}
})
.state('eventmenu.home.home2', {
url: "/home2",
views: {
'menuContent' :{
templateUrl: "home2.html"
}
}
})
.state('eventmenu.checkin', {
url: "/check-in",
views: {
'menuContent' :{
templateUrl: "check-in.html",
controller: "CheckinCtrl"
}
}
})
.state('eventmenu.attendees', {
url: "/attendees",
views: {
'menuContent' :{
templateUrl: "attendees.html",
controller: "AttendeesCtrl"
}
}
})
$urlRouterProvider.otherwise("/event/home");
})
有关完整示例,请参阅codepen:http://codepen.io/liamqma/pen/mtBne
/event/home
/event/checkin
正在运作,但
/event/home/home1
/event/home/home2
无效。
非常感谢任何帮助。谢谢!
答案 0 :(得分:50)
我在那里解决了你的问题:http://codepen.io/yrezgui/pen/mycxB
基本上,Ionic正在使用具有巨大API的Angular-UI-Router。在您的情况下,您需要查看此链接以了解:https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#view-names---relative-vs-absolute-names
简而言之,home1和home2状态是home状态的子节点,因此它们无法访问menuContent视图,因为它与eventmenu状态有关。
所以你需要写:
.state('eventmenu.home.home2', {
url: "/home2",
views: {
'menuContent@eventmenu' :{
templateUrl: "home2.html"
}
}
})
而不是:
.state('eventmenu.home.home2', {
url: "/home2",
views: {
'menuContent' :{
templateUrl: "home2.html"
}
}
})
home1在修改后仍无法正常工作,因为它的网址是:
url: "/home/home1",
而不是:
url: "/home1",
通过编写 eventmenu.home.home1 ,你可以 home1 成为 home 的孩子,所以它的url需要是相对的,而不是绝对的
希望你理解它并享受Ionic的乐趣;)