我正在使用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
不工作。
任何帮助是极大的赞赏。谢谢!
我在那里解决了您的问题: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状态是家庭状态的子级,因此它们无法访问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玩得开心;)