加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angularjs嵌套状态:3级

发布时间:2020-12-17 08:29:28 所属栏目:安全 来源:网络整理
导读:我使用Agnularjs和Ionic框架。我想实现一个嵌套的状态,看起来像下面, 事件菜单(root) 首页(2级) 首页1(3级) 首页2 签到 参加者 我的路由文件看起来像, angular.module('ionicApp',['ionic']).config(function($stateProvider,$urlRouterProvider) { $stat
我使用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需要是相对的,而不是绝对的。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读