Angularjs嵌套状态:3级

前端之家收集整理的这篇文章主要介绍了Angularjs嵌套状态:3级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Agnularjs和Ionic框架。我想实现一个嵌套的状态,看起来像下面,

>事件菜单(root)
>首页(2级)
>首页1(3级)
>首页2
>签到
>参加者

我的路由文件看起来像,

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正在使用Angular-UI-Router,它有一个巨大的API。在你的情况下,你需要检查这个链接,以了解: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',views: {
    'menuContent' :{
      templateUrl: "home2.html"
    }
  }
})

和home1不工作,即使这个修改后,因为其url是:

url: "/home/home1",

代替 :

url: "/home1",

通过编写eventmenu.home.home1,你使home1的家的孩子,所以它的url需要是相对的,而不是绝对的。

希望你明白它,并与离子乐趣;)

猜你在找的Angularjs相关文章